PHP如何实现基于Redis的分布式锁,并应用于长尾场景下的高并发控制?
- 内容介绍
- 文章标签
- 相关推荐
本文共计826个文字,预计阅读时间需要4分钟。
在使用分布式锁进行互斥资源访问时,我们常采用Redis实现。然而,Redis单节点锁在极端情况下存在缺陷,可能导致业务允许的短暂失效。因此,使用单节点的Redis锁方案需谨慎。
在使用分布式锁进行互斥资源访问时候,我们很多方案是采用redis的实现。
固然,redis的单节点锁在极端情况也是有问题的,假设你的业务允许偶尔的失效,使用单节点的redis锁方案就足够了,简单而且效率高。
redis锁失效的情况:
客户端1从master节点获取了锁
master宕机了,存储锁的key还没来得及同步到slave节点上
slave升级为master
客户端2从新的master上获取到同一个资源的锁
于是,客户端1和客户端2同事持有了同一个资源的锁,锁的安全性被打破。
本文共计826个文字,预计阅读时间需要4分钟。
在使用分布式锁进行互斥资源访问时,我们常采用Redis实现。然而,Redis单节点锁在极端情况下存在缺陷,可能导致业务允许的短暂失效。因此,使用单节点的Redis锁方案需谨慎。
在使用分布式锁进行互斥资源访问时候,我们很多方案是采用redis的实现。
固然,redis的单节点锁在极端情况也是有问题的,假设你的业务允许偶尔的失效,使用单节点的redis锁方案就足够了,简单而且效率高。
redis锁失效的情况:
客户端1从master节点获取了锁
master宕机了,存储锁的key还没来得及同步到slave节点上
slave升级为master
客户端2从新的master上获取到同一个资源的锁
于是,客户端1和客户端2同事持有了同一个资源的锁,锁的安全性被打破。

