您如何在事件 Redis 驱动程序中使用MULTI
/ EXEC
(和),例如(使用 EventMachine 的 Ruby 驱动程序)?如果我运行: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
正在进行时无法执行其他操作,但这感觉不是一个很好的解决方案,还有其他人找到更好的方法吗?