我可以用 kue / node.js 保存数据吗
Can I persist data with kue / node.js
我目前正在使用 kue / node.js
https://github.com/Automattic/kue
创建并保存作业后,数据将在我的本地 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 客户端
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服务器配置来处理。在你的redis.conf, you have a section commented snapshotting
which you should explore. There are a number of ways to configure persistence, but I think what best suits your use case is AOF wherein all incoming writes to the redis server are logged to a file. Please do read about how redis can be configured for persistence here。您可以通过将此行添加到您的 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*"
的结果如下:
然后我重新启动node test.js
,`redis-cli键"q*"的结果如下:
实际上,这里添加一个新任务:q:job:2
。 kue
将在您调用 job.remove
时删除作业。所以你应该检查 redis-server 的日志文件看看发生了什么。
我目前正在使用 kue / node.js
https://github.com/Automattic/kue
创建并保存作业后,数据将在我的本地 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 客户端
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服务器配置来处理。在你的redis.conf, you have a section commented snapshotting
which you should explore. There are a number of ways to configure persistence, but I think what best suits your use case is AOF wherein all incoming writes to the redis server are logged to a file. Please do read about how redis can be configured for persistence here。您可以通过将此行添加到您的 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*"
的结果如下:
然后我重新启动node test.js
,`redis-cli键"q*"的结果如下:
实际上,这里添加一个新任务:q:job:2
。 kue
将在您调用 job.remove
时删除作业。所以你应该检查 redis-server 的日志文件看看发生了什么。