redis - 锁定redis集群
问题描述
我有一个由 3 个主节点组成的 Redis 集群,每个主节点都有相应的从节点。我想在集群上获取一个锁来执行一些写操作,然后释放锁。
从我读到的内容是 - 要连接到集群,我们通常连接到集群中的一个节点并在该节点上执行所有操作,然后再处理重定向到集群中的其他节点。
是否可以在 Redis 集群上获取锁?[PS 我正在使用 Redisson 客户端] 从 Multilock 和 redlock ( https://github.com/redisson/redisson/wiki/8.-Distributed-locks-and-synchronizers ) 下的 Redisson 客户端示例中,他们正在获取锁在各个节点上。
- Multi lock或Red lock如何在集群上工作?
- 如果我有 Redis 集群,我应该如何使用哪种锁?
- 我使用哪个库(Jedis/Redisson)?
Jedis 似乎也支持锁定集群(https://github.com/kaidul/jedis-lock)。
PS:我已经广泛阅读了这方面的内容,但我无法找到关于锁定集群的明确答案。非常感谢一些帮助。
解决方案
我找到了解决上述问题的方法。
只要我们使用相同的密钥在所有客户端节点上获取锁,所有获取锁的尝试都将转到 Redis 集群上的同一节点。所以你可以只使用 Redisson 的简单 Rlock。
请参阅对此问题的评论: https ://github.com/leandromoreira/redlock-rb/issues/63
推荐阅读
- spring-boot - 自定义 ObjectMapper 覆盖 SpringBoot 默认 ObjectMapper
- laravel - (laravel)在值标签中获取正确的产品
- python - 如何在 django 中保存 value ='val' where user ='username'
- node.js - IE11 使用 blob 保存下载的 .xlsx 损坏的文件(在本地工作)
- jquery - 缩放后如何保持形状图选择颜色?
- c# - 如何将此字符串转换为日期时间
- javascript - 编译 Vue NativeScript 项目时,命令 gradlew.bat 失败,退出代码为 1
- python - BST算法的实现
- php - 将数组传递给 Twig 中的宏
- swift - 快速使用 GCD 的竞争条件