请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

redission分布式锁存在的问题

rediscluster模式下,生成锁是如何分布的,是只存在于某一个master节点的某个槽上,然后同步到slave上吗?获取锁的时候是否可以从slave上获取,如果可以,是否存在由于同步不及时而产生的多个线程同时获取到锁的线程安全问题?与zookeeper的分布式锁相比有哪些优缺点?
下载视频          

正在回答 回答被采纳积分+3

1回答

InCowboy 2021-09-21 17:51:02

在Redis Cluster中,默认操作都是在Redis的master节点上操作的,Slave只是起一个备份作用,所以不会从slave中去获取数据,Redis与zookeeper的分布式最大区别就是Redis是走轮询方式去获取锁,而zk是通过监听机制,所以理论上zk性能要高一些,然后还有就是如果获取到锁的客户端如果出现故障,Redis释放锁是通过过期,而zk则很快,因为zk是创建临时节点,会话丢失那么节点数据就丢失了

0 回复 有任何疑惑可以回复我~
  • 提问者 qq_妈妈咪呀_0 #1
    不论是redis还是zk,如果客户端与服务端网络故障,redis超过30s,zk临时节点过期删除,此时客户端未执行完毕的话,其他客户端也可以拿到锁,这时存在线程不安全问题吧
    回复 有任何疑惑可以回复我~ 2021-09-21 18:48:51
  • 提问者 qq_妈妈咪呀_0 #2
    另外redission的红锁是针对redis哪种部署模式
    回复 有任何疑惑可以回复我~ 2021-09-21 18:57:26
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信