【redis】redis分布式锁(三)自动续期
·
系列文章目录
【redis】redis分布式锁(一)手写分布式锁1.0~6.0
【redis】redis分布式锁(二)可重入锁+设计模式
前言

一、CAP

redis集群 AP
在主节点set的值,但是在复制给从机过程中宕机了,这时候从机上位是不能获取这个值的

ZooKeeper集群 CP 数据一致性
CP:

故障:牺牲了高可用,即在一台master宕机后,选举新master时,zk服务不可用

Eureak集群 AP
AP:

nacos集群 AP

二、lua脚本
脚本:if redis.call('HEXISTS',KEYS[1],ARGV[1]) == 1 then return redis.call('expire',KEYS[1],ARGV[2]) else return 0 end

三、融合进业务类
在锁的代码


主线程代码

执行:

四、redis分布式锁的总结

V1.0 和 V2.0 单机锁

V3.0 和 V4.0 finally删除锁、自旋、过期时间、lua脚本保证原子化执行

V5.0 和 V6.0 5.0删除锁时需要同时判断锁是否为自己的,6.0unlock用到lua脚本原子化执行。至此,小厂可以使用V6.0版本。

V7.0 可重入锁 使用hset来替代原来的setnx、lua脚本、以及实现Lock接口的AQS规范、工厂模式的引入


V8.0 自动续期 保证锁在业务类执行期间不会过期,自动续期
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)