gpt4 book ai didi

azure - 使用 Redlocks 获取 Azure Redis 缓存上的锁

转载 作者:IT王子 更新时间:2023-10-29 06:03:22 25 4
gpt4 key购买 nike

我有一个 Azure Redis 缓存,并且多个客户端正在使用它。缓存中的共享资源(键)很少需要互斥。我正在使用提议的 redlock 算法 here .

我的要求是每个客户端都需要访问共享资源,但以互斥的方式。如果客户端无法获取资源上的锁,那么它应该以 30 秒的间隔继续尝试获取锁,直到获得锁。为了防止死锁,如果进程崩溃,锁应该在 5 分钟后过期。

我查了redock.net的文档 github ,但我不确定如何正确使用重试、等待和过期参数来达到上述标准。谁能引导我朝那个方向前进?或者还有其他详细的文档吗?

代码是用 .NET 编写的,因此我使用 StackExchange.Redis 和 Redlock.net

最佳答案

您可以使用以下参数来实现您想要的:

到期时间:TimeSpan.FromMinutes(5)

这是 RedLock.net 将 redis key 过期时间设置为的时间,例如在以下情况下:进程崩溃。如果进程仍然处于事件状态(在本例中为 2.5 分钟),则每次经过该时间段的一半时,redis key 的过期时间将自动延长。由于锁扩展计时器的存在,如果您希望另一个进程能够在失败情况下更快地接管,您可以将到期时间设置得更短。

等待时间:TimeSpan.MaxValue

这是 RedLock.net 等待获取锁的时间(在本例中,实际上是永远)。

重试时间:TimeSpan.FromSeconds(30)

这是 RedLock.net 在等待锁定时被阻塞时在重试之间等待的时间。

自 RedLock.net 1.7.0 起,如果您希望能够摆脱等待获取锁的情况,还可以提供取消 token 。

关于azure - 使用 Redlocks 获取 Azure Redis 缓存上的锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37146037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com