Redis使用-分布式锁【lua实现】

一、前言

分布式锁是控制分布式系统之间同步访问共享资源的一种方式,具体概念可自行查询。分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。现在我们基于Redis实现分布式锁。

二、Redis分布式锁需要解决的问题

1、解锁失败可能导致死锁(可通过设置超时时间解决,但引申出问题2、问题3)
2、加锁与超时设置无法保证原子性,导致超时设置失败,造成死锁(可通过lua脚本在服务端执行解决)
3、解锁时误删(可通过为锁的值设置唯一值,当解锁时进行唯一值对比)

三、实现

1、加锁lua脚本实现

加锁脚本

2、解锁lua脚本实现

解锁脚本

3、java包含变量

变量定义

4、 加锁java实现:

加锁实现

5、解锁java实现:

解锁实现

java端实现代码较多,这里只贴了关键性代码

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容