1.首先利用 setnx 来保证:如果 key 不存在才能获取到锁,如果 key 存在,则获取不到锁
2.然后还要利用 lua 脚本来保证多个 redis 操作的原子性
3.同时还要考虑到锁过期,所以需要额外的一个看门狗定时任务来监听锁是否需要续约
4.同时还要考虑到 redis 节点挂掉后的情况,所以需要采用红锁的方式来同时向 N /2+1个节点申请锁,都申请到了才证明获取锁成功,这样就算其中某个 redis 节点挂掉了,锁也不能被其他客户端获取到
Redis 分布式锁底层是如何实现的?
最新推荐文章于 2024-04-24 12:46:56 发布