【问题标题】:Do I need to wait for a callback on a call to WATCH in Redis (in node.js)?我是否需要等待 Redis(在 node.js 中)中对 WATCH 的调用的回调?
【发布时间】:2011-12-27 02:50:08
【问题描述】:

我正在使用node-redis。在这样的代码中:

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 客户端上的顺序调用上是否保证顺序?或者 WATCH 会在 GET 之后发生吗?

【问题讨论】:

    标签: node.js redis watch


    【解决方案1】:

    重新构建我的问题后,我意识到它肯定是保留序列的,我实际上是在重复这个问题:Are Redis updates synchronous?

    所以答案肯定是我不需要等待 WATCH 回调并且我的原始代码是可以的。

    各位,抱歉打扰了网络!

    【讨论】:

      【解决方案2】:

      Watch 总是返回 OK。 http://redis.io/commands/watch

      仅当您稍后使用 MULTI/EXEC 来检查 EXEC 返回值时才有用。

      有关 Redis 事务的更多信息,请访问http://redis.io/topics/transactions

      【讨论】:

      • 好吧,在node-redis 中,WATCH 总是回调并返回 OK(但 返回为真)。但问题是它是否总是生效并立即用 OK 回调。
      • 不管你是否等待回调,命令的顺序应该是一样的,这才是最重要的。
      • 感谢@Theo 帮助澄清。
      • 对不起,我似乎误解了这个问题。 @Grumdrig 如果您不等待回调,它可能会作为pipelining 工作。
      猜你喜欢
      • 2021-06-03
      • 2020-04-09
      • 1970-01-01
      • 1970-01-01
      • 2011-02-16
      • 2020-01-29
      • 1970-01-01
      • 2016-02-17
      • 2016-06-01
      相关资源
      最近更新 更多