我可以用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的日志文件来查看发生了什么。