2011-12-26 2 views
3

Я использую node-redis. В коде, как это:Нужно ли ждать ответа на вызов WATCH в Redis (в 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 всегда иметь непосредственный эффект?

РЕДАКТИРОВАТЬ: немного пересмотреть вопрос, гарантируется ли последовательность при последовательных вызовах на том же клиенте Redis? Или может ли ВАМТ произойти после GET?

ответ

2

После станут ассоциироваться мой вопрос, я понимаю, что она должна быть, безусловно, последовательность сохраняющих, и я на самом деле дублируя этот вопрос: Are Redis updates synchronous?

Так ответ я уверен, что мне не нужно ждать, пока WATCH перезвонит, и мой оригинальный код в порядке.

Извините за шум в Интернете, люди!

1

Часы всегда возвращаются ОК. http://redis.io/commands/watch

Полезно, только если позже вы используете MULTI/EXEC, чтобы проверить возвращаемое значение EXEC.

Для получения дополнительной информации о Redis сделок, посетить http://redis.io/topics/transactions

+0

Ну, в 'node-redis', WATCH всегда _calls back_ с OK (но _returns_ true). Вопрос, однако, заключается в том, всегда ли он вступает в силу и немедленно вызывает OK. – Grumdrig

+2

Порядок команд должен быть одинаковым независимо от того, будете ли вы ждать обратного вызова или нет, и это все, что имеет значение. – Theo

+0

Спасибо, @ Theo, за помощь в разъяснении. – Grumdrig