首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Redlock获取Azure Redis Cache上的锁

使用Redlock获取Azure Redis Cache上的锁
EN

Stack Overflow用户
提问于 2016-05-10 18:13:52
回答 1查看 2.3K关注 0票数 3

我有一个和多个客户正在使用它。缓存中很少有共享资源(密钥)需要相互排斥。我正在使用redlock算法作为建议的这里

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

我已经检查了来自redock.net的github文档,但是我不知道如何正确地使用retry、wait和use参数来达到上述标准。有人能指引我朝那个方向走吗?或是否有其他详细文件可供使用?

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-19 16:58:06

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

expiryTimeTimeSpan.FromMinutes(5)

这是在进程崩溃的情况下,RedLock.net会将redis键过期设置为多长时间。如果进程仍在运行(在此情况下为2.5分钟),每次此时间段的一半时间过去时,redis密钥到期将自动延长。由于使用了锁扩展计时器,如果希望另一个进程能够在故障情况下更早地接管,则可以将过期时间设置得更短。

waitTimeTimeSpan.MaxValue

这是RedLock.net等待获得锁的时间(在这种情况下,实际上是永久的)。

retryTimeTimeSpan.FromSeconds(30)

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

由于RedLock.net 1.7.0,您还可以提供一个取消令牌,如果您希望能够突破等待锁被获得。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37146037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档