【发布时间】:2021-02-17 21:59:32
【问题描述】:
根据 redis-rb ruby gem 文档;
redis.watch("key") do
if redis.get("key") == "some value"
redis.multi do |multi|
multi.set("key", "other value")
multi.incr("counter")
end
else
redis.unwatch
end
end
我对此有两个问题;
- 为什么需要 unwatch 行?我的想法是,如果 key == "some value",则将 "key" 设置为其他值,如果在调用 EXEC 时 "key" 没有改变,则增加计数器。在我看来, else 语句在这种情况下永远不会被执行。如果您在没有 else/unwatch 的情况下运行此代码,则返回 nil。
- 如果 redis.watch "key" 输入时没有块 (redis.watch "key");为什么我无法取消监视特定键?我得到(错误数量的参数(给定 1,预期为 0))??
这是 ruby gem 的链接https://github.com/redis/redis-rb
【问题讨论】:
标签: ruby-on-rails ruby redis