Gee*_*Jan 5 concurrency livelock redis
进程 A 和 B 都在 Redis 资源 R 上运行。
这些进程可以并行执行,我需要两个进程在更改 R 值时确定 R 的值。
因此,我将Redis 事务与WATCH 命令一起使用。来自文档:“只有在没有其他客户端修改任何 WATCHed 键的情况下,我们才要求 Redis 执行事务。否则根本不输入事务。”
要在失败的情况下重试,建议的方法是循环 Watch/Multi-exec 循环,直到成功为止。但是,我担心 A 和 B 可能会无限期地开始循环(即:活锁)。
这有什么值得担心的吗?更好的是,该怎么办?在重试时设置随机超时会解决问题吗?