Concurrency 两个进程可以使用Watch更改相同的Redis资源。我应该为livelock担心吗?
进程A和进程B都在Redis资源R上运行 这些过程可以并行执行,我需要两个过程在它们改变R时确定R的值 因此,我使用的是。文档中写道:“我们要求Redis仅在没有其他客户修改任何关注的密钥时执行交易。否则,根本不会输入交易。” 若要在失败时重试,建议的方法是循环Watch/Multi-exec循环,直到成功。但是,我担心A和B可能会无限期地开始循环(即:livelock)Concurrency 两个进程可以使用Watch更改相同的Redis资源。我应该为livelock担心吗?,concurrency,redis,livelock,Concurrency,Redis,Livelock,进程A和进程B都在Redis资源R上运行 这些过程可以并行执行,我需要两个过程在它们改变R时确定R的值 因此,我使用的是。文档中写道:“我们要求Redis仅在没有其他客户修改任何关注的密钥时执行交易。否则,根本不会输入交易。” 若要在失败时重试,建议的方法是循环Watch/Multi-exec循环,直到成功。但是,我担心A和B可能会无限期地开始循环(即:livelock) 这有什么好担心的吗?更好的是,该怎么办?在重试时设置一个随机超时可以解决问题吗?无需担心,因为只有a或B的EXEC和chan
这有什么好担心的吗?更好的是,该怎么办?在重试时设置一个随机超时可以解决问题吗?无需担心,因为只有a或B的EXEC和change R会成功(Redis[大部分]是单线程的)。失败的将需要使用新的R值重试事务。但是存在饥饿的可能性,对吗?是的,这种乐观锁定模式存在饥饿的可能性。