我可以用kue / node.js保存数据吗?

我目前正在使用kue / node.js

https://github.com/Automattic/kue

我创build并保存作业后,数据将在我的本地Redis服务器中。

var job = queue.create('new_job', { title: 'welcome email for tj' , to: 'tj@learnboost.com' , template: 'welcome-email' }).save( function(err){ if( !err ) console.log( job.id ); }); 

Redis Cli

 127.0.0.1:6379> keys * 1) "q:job:12" 2) "q:jobs:inactive" 3) "q:stats:work-time" 4) "q:ids" 5) "q:job:11" 6) "q:job:7" 7) "q:search:object:13" 8) "q:search:word:TTL" 9) "q:search:object:2" 10) "q:jobs:new_job:inactive" .......... 

现在我重新启动我的机器后再次检查,

 127.0.0.1:6379> keys * (empty list or set) 

所以它是空的。

这是显而易见的,但我想坚持数据,我检查了KUE文件,但我找不到任何东西?

有没有办法做到这一点。

提前致谢 。

我认为持久性可以通过你的redis服务器configuration来处理。 在你的redis.conf中 ,你有一段评论你应该探索的snapshotting 。 有很多方法可以configuration持久性,但我认为最适合您的用例的是AOF,其中所有到redis服务器的传入写入都会logging到文件中。 请阅读有关如何在此处configuration持久性的redis。 您可以通过将此行添加到您的conf文件来打开AOF持久性:

 appendonly true 

实际上,除非您手动删除作业,否则kue不会删除作业。

这里是一个例子,保存为test.js:

 const kue = require('kue') const queue = kue.createQueue() queue.process('echo', (job, done) => { console.log(job.data.message) done(); }) const job = queue.create('echo', { message: 'hello world' }).save((err) => { if (err) { console.log(job.id) } }) 

当我通过执行

 node test.js 

我检查redis中的队列信息, redis-cli keys "q*"的结果如下:

在这里input图像说明

然后我重新启动node test.js ,`redis-cli keys“q *”的结果如下:

在这里input图像说明

其实在这里添加一个新的任务: q:job:2 。 当你打电话给job.remove时, kue会删除一份工作。 所以你应该检查redis-server的日志文件来查看发生了什么。