Pra*_*rya 2 azure redis stackexchange.redis azure-redis-cache
我有一个Azure Redis缓存,多个客户端正在使用它.缓存中的共享资源(密钥)很少需要互斥.我正在使用这里提出的redlock算法.
我的要求是每个客户端都需要以互斥的方式访问共享资源.如果客户端无法获取资源上的锁定,那么它应该以30秒的间隔继续尝试获取锁定,直到获取它为止.为防止死锁,如果进程崩溃,锁定应在5分钟后过期.
我从github检查了redock.net的文档,但我不确定如何正确使用重试,等待和到期参数来达到上述标准.任何人都可以指导我这个方向吗?或者是否有其他详细的文件?
代码是用.NET编写的,所以我使用的是StackExchange.Redis和Redlock.net
小智 6
您可以使用以下参数来实现您的目标:
到期时间:TimeSpan.FromMinutes(5)
这是RedLock.net将redis密钥到期时间设置为多长时间,例如在进程崩溃的情况下.如果进程仍然存活(在这种情况下为2.5分钟),则每次该时间段的一半时间,redis密钥到期将自动延长.由于锁定扩展计时器,如果您希望其他进程能够在故障情况下更快地接管,则可以将到期时间设置得更短.
等待时间:TimeSpan.MaxValue
这是RedLock.net等待获取锁定的时间(在这种情况下,有效地永远).
重试时间:TimeSpan.FromSeconds(30)
这是RedLock.net在等待锁定等待重试之间等待的时间.
从RedLock.net 1.7.0开始,如果您希望能够突破等待获取锁定,您还可以提供取消令牌.
| 归档时间: |
|
| 查看次数: |
1060 次 |
| 最近记录: |