如何在MULTI
(使用EventMachine的Ruby驱动程序)的事件Redis驱动程序中使用EXEC
/ WATCH
(和em-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
正在进行时无法执行其他操作,但这不是一个很好的解决方案,有任何人否则找到了更好的方法?
答案 0 :(得分:0)
正如@balu在对问题的评论中所述,没有多重联系就无法做到。