Redis需要加锁吗?

fee*_*eat 5 redis

我读到 Redis 是单线程的,所有命令都是原子的。但也有一些参考文献讨论了 Redis 中的锁,例如https://redis.io/topics/distlock

我不清楚为什么 Redis 是单线程的还需要锁。有人可以解释一下吗?

Leo*_*llo 12

不,Redis 不需要锁定。

是的,Redis 是单线程的。我们这里所说的锁不是针对Redis的,而是利用Redis来做分布式锁。

分布式锁的目的是确保在可能尝试执行同一工作的多个节点中,只有一个节点实际执行该操作(至少一次只有一个)。这项工作可能是将一些数据写入共享存储系统、执行一些计算、调用一些外部 API 等。

出自:如何做分布式锁

这几个节点是您在其他服务器上的工作负载。您正在使用 Redis 类似的 RAM 共享内存来实现锁。

Redis 是分布式锁的绝佳选择,因为它是内存数据库,因此可以提供亚毫秒级的延迟。有关使用 Redis 实现的此类锁的示例,请参阅python-redis-lock