我遇到了一个问题,其中在我们的一个模型中异步保存在应用程序级别声明的唯一性验证没有被所述验证阻止。由于我的应用程序上有一个可切换选项来启用/禁用唯一性验证,因此在数据库级别添加验证对我来说不是一个选项。
在搜索时,我发现 Redis 锁最适合这种情况,但是由于我对“Redis 锁”这个术语不熟悉,所以我需要一些关于哪个插件/实现更好地实现我需要的行为的建议。
我在这里看到了一个可能与我的问题类似的响应Ruby - Redis based mutex with expire implementation,它说不需要插件,因为它可以像这样单独使用 Redis 来实现
def lock(key, timeout)
if @redis.set(key, Time.now, nx: true, px: timeout)
begin
yield
ensure
release key
end
end
end
而且我还看到有人推荐这个 redlock 插件在这里找到https://github.com/leandromoreira/redlock-rb但可能是一个矫枉过正。
提前致谢