我需要从应用程序客户端连接到单个 Redis 实例。
由于客户端将在 Kubernetes 中复制,我正在研究有关锁的 Redis 文档,以防止客户端副本之间的竞争。
在谷歌搜索和阅读之后,我将注意力集中在这两个资源上:
SETNX此处描述的命令:https : //redis.io/commands/setnx有趣的是,SETNX文档明确建议不要使用SETNX来实现锁,指出它基本上已经过时了:
为了支持 Redlock 算法,不鼓励使用以下模式 [...]
我们仍然记录旧模式,因为某些现有实现链接到此页面作为参考。
然而 Redlock 算法是专门为分布式锁量身定制的,因此当一个人试图锁定多个 Redis 实例时 - 它们实际上是指多个master。
更进一步,库redsync (golang) 声明New函数如下:
func New(pools []Pool) *Redsync {
return &Redsync{
pools: pools,
}
}
Run Code Online (Sandbox Code Playgroud)
它看起来毫无疑问是为支持 Redis 集群上的锁定而设计的。
在我的用例中,我将只连接到一个 Redis 实例。
也许我可以只使用 redsync 包并传递一个长度为 1 的切片,但在我看来,该SETNX模式在单个 Redis 实例上也能正常工作。
我是否正确地看到了这一点?谢谢
| 归档时间: |
|
| 查看次数: |
2698 次 |
| 最近记录: |