2016-01-08 106 views
1

我目前工作KUE/Node.js的我能堅持用數據KUE/Node.js的

https://github.com/Automattic/kue

後創建和保存任務中的數據會在我的本地服務器redis的。

var job = queue.create('new_job', { 
     title: 'welcome email for tj' 
     , to: '[email protected]' 
     , 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文檔,但我找不到任何東西?

有沒有辦法做到這一點。

在此先感謝。

回答

2

我認爲持久性可以通過您的redis服務器配置來處理。在你的redis.conf中,你有一段評論snapshotting,你應該探索。有很多方法來配置持久性,但我認爲最適合您的用例的是AOF,其中所有到redis服務器的傳入寫入都會記錄到文件中。請閱讀有關如何配置持久性的redis here。您可以通過加入這一行到你的conf文件打開AOF持久性:

appendonly true 
+0

非常感謝。我會看看這:) –

0

事實上,除非你手動刪除作業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*"結果爲如下所示:

enter image description here

然後我重新啓動node test.js,`Redis的-CLI鍵的結果 「Q *」 低於:

enter image description here

其實,這裏添加新任務:q:job:2。當您致電job.remove時,kue將會取消一項工作。所以你應該檢查redis-server的日誌文件來看看發生了什麼。