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