redis分布锁改进以及相关总结

目录

 

redis分布锁+lua 基本实现

什么风险?

什么意思?

如何解决?

链接


redis分布锁+lua 基本实现

这是我之前写的博客,除了文章末尾的redis锁续期的问题,在一篇公众号还说到另一个问题:

什么风险?

这种方式仍存在单点风险,以上实现在 Redis 正常运行情况下是没问题的,但如果存储锁对应key的那个节点挂了的话,就可能存在丢失锁的风险,导致出现多个客户端持有锁的情况,这样就不能实现资源的独享了。

 

什么意思?

我们举个栗子:现在有一个哨兵模式的redis集群,A获取主redis一个资源的锁,刚好master的redis锁还没有同步到从的redis上,这时master宕机了,这时A程序认为A还是有锁的对吧。这个是重点,A程序认为A具有锁,执行A事务。从redis顶替master redis作为主redis使用,这时B过来要同一个资源的锁,从redis没有同步A的锁,所以这时是没有人获得这个资源的锁(在redis上讲),B获取到这个资源的锁,执行B事务。那么这时AB都有锁,这跟分布式锁的原则违背了,互斥原则!

如何解决?

可以使用RedissionRedLok解决

具体博客可以查看链接如下

https://mp.weixin.qq.com/s?__biz=MzU2Njg3OTU1Mg==&mid=2247483984&idx=1&sn=97e510fa19d32bf66b9acab3253c8029&chksm=fca4f67fcbd37f69065555127e6c4f173f680eeb3230b197e390e24ecf2eef870a26c31e875d&mpshare=1&scene=24&srcid=#rd

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值