Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我可以用kue/node.js保存数据吗_Javascript_Node.js_Database_Persistence_Kue - Fatal编程技术网

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

Javascript 我可以用kue/node.js保存数据吗,javascript,node.js,database,persistence,kue,Javascript,Node.js,Database,Persistence,Kue,我目前正在使用kue/node.js 创建并保存作业后,数据将保存在本地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.lo

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

创建并保存作业后,数据将保存在本地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服务器配置来处理持久性。在您的中,您有一个注释了
快照的部分,您应该浏览该部分。有许多方法可以配置持久性,但我认为最适合您的用例是AOF,在AOF中,对redis服务器的所有传入写入都记录到一个文件中。请阅读如何配置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键“q*”
的结果如下:

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


实际上,这里添加了一个新任务:
q:job:2
kue
将在您调用
job.remove
时删除作业。因此,您应该检查redis服务器的日志文件,看看发生了什么。

非常感谢。我将对此进行调查:)