3

您如何在事件 Redis 驱动程序中使用MULTI/ EXEC(和),例如(使用 EventMachine 的 Ruby 驱动程序)?如果我运行:WATCHem-hiredis

redis.multi do
  redis.sadd("foo", "bar") do
    redis.inc("baz", "qux") do
      redis.exec do
        puts 'yay!'
      end
    end
  end
end

如果有EXEC很多事情发生(例如,假设我有一个计时器每秒增加一些键,并且上面的代码需要运行超过一秒,那么一些增量命令将作为MULTI/的一部分发送EXEC——如果我想中止事务怎么办?然后任何碰巧成为它一部分的增量都会消失。很容易出现更糟糕的情况)。

我想我可以实现某种锁定,以便在MULTI/EXEC正在进行时无法执行其他操作,但这感觉不是一个很好的解决方案,还有其他人找到更好的方法吗?

4

1 回答 1

0

正如@balu 在对该问题的评论中所说,没有多个连接就无法完成。

于 2011-09-28T10:20:48.893 回答