我读到Redis是单线程的,所有命令都是原子的。但是也有参考文献讨论Redis中的锁,例如https://redis.io/topics/distlock
我不清楚,如果Redis是单线程的,为什么Redis仍然需要锁。有人可以解释一下吗?
答案 0 :(得分:3)
否,Redis不需要锁定。
是的,Redis是单线程的。我们在这里讨论的锁不是针对Redis,而是针对分布式锁使用Redis。
分布式锁定的目的是确保在可能尝试完成同一工作的几个节点中,只有一个实际上可以执行(一次至少一次)。这项工作可能是将一些数据写入共享存储系统,执行一些计算,调用一些外部API等。
发件人:How to do distributed locking
这几个节点是您在其他服务器上拥有的工作负载。您将Redis用作RAM共享内存来实现锁定。
Redis是分布式锁的绝佳选择,因为它是内存数据库,因此延迟时间不到毫秒。