2011-12-26 8 views
3

私はnode-redisを使用しています。このようなコードでは:RedisのWATCH(node.js)のコールでコールバックを待つ必要がありますか?

var store = require('redis').createClient(); 
store.watch('some:key'); 
store.get('some:key', function (err, results) { 
    var multi = store.multi(); 
    // COMPUTE SOMETHING WITH results 
    multi.set('something:or:other', 25); 
    multi.exec(checkAllIsWell); 
}); 

はライン1-2

store.watch('some:key', function (err, alwaysok) { 
    store.get('some:key', function (err, result) { 

を読むべきかwatchはいつもすぐに効果があるのだろうか?

EDIT:少し質問を再構成するには、同じRedisクライアントのseqential呼び出しでシーケンスが保証されていますか?あるいは、GET後にWATCHが起こることはありますか?

答えて

2

は私の質問を再フレーミングしたので、私はそれが確実にシーケンス保存しなければならないことを実感訪問し、私は実際にこの質問を複製しています:Are Redis updates synchronous?

そう答え私はWATCHがコールバックするのを待つ必要はなく、元のコードはOKであることは間違いありません。

大変申し訳ございません。

1

時計は常にOKを返します。 http://redis.io/commands/watch

後でMULTI/EXECを使用してEXECの戻り値を確認する場合にのみ役立ちます。 Redisの取引の詳細については

http://redis.io/topics/transactions

+0

まあ、 'node-redis'では、WATCHは常にOKを返しています(しかし_returns_ true)。しかし、問題は、それがいつも有効かどうかであり、すぐにOKでコールバックします。 – Grumdrig

+2

コールバックを待つかどうかに関わらず、コマンドの順序は同じでなければなりません。 – Theo

+0

ありがとう、@テオ、明確にするため。 – Grumdrig

関連する問題