【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 自动续期 保证锁在业务类执行期间不会过期,自动续期


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值