很抱歉,我是Distributed Lock和Redis的新手,我听说Redis是一个单线程服务器。所以我的问题是为什么我们需要distributed lock management用于Redis?例如,第二个线程(客户端B已启动)将不会中断前一个线程,直到完成第一个线程(客户端A启动)的操作。即使两个线程都在处理相同的数据。我知道我必须错过一些东西。请帮助纠正我。感谢。
答案 0 :(得分:1)
我认为分布式锁不是关于Redis本身(你不应该真正关心它是否是单线程的),而是关于你的应用程序。
很清楚“常规”(非分布式)锁的作用是什么,但它适用于单个JVM中的多线程应用程序。
“distributed”这个词增加了一种方法,可以跨多个JVM同步对某些资源的访问,这样只有一个JVM可以执行一个关键部分。
现在,正如您所引用的文章中所述,可以使用“SET”命令实现锁定,但这种实现的根本问题是Redis本身的单点故障,这就是他们谈论的原因Redlock算法,支持根据许多独立Redis机器的状态获取锁。请注意,在任何一点上我们都不关心Redis本身是单线程还是多线程。