码迷,mamicode.com
首页 > 其他好文 > 详细

Redis实现分布式锁

时间:2020-02-01 10:45:42      阅读:65      评论:0      收藏:0      [点我收藏+]

标签:基于   sync   src   指定   避免   seconds   mil   ram   ISE   

                                                                                                                              Redis实现分布式锁

1.锁的处理

单应用中使用锁:单进程多线程

synchroize , Lock

分布式应用中使用的锁:多进程

2.分布式锁的实现方式

数据库的乐观锁

基于zookeeper的分布式锁

基于redis的分布式锁

3.分布式锁的注意事项

互斥性:在任意时刻,只有一个客户能持有锁

同一性:加锁和解锁必须是同一个客户端,客户端自己不能把别人加的锁给解了

避免死锁:即使有一个客户端在持有锁的期间奔溃而没有主动解锁,也能保证后续其他客户端能加锁

4.实现分布式锁

4.1获取锁

在SET命令中,有很多选项可用来修改命令的行为,以下是SET命令可用选项的基本语法

技术图片

EX seconds -设置指定的到期时间以秒为单位。

PX milliseconds-设置指定的到期时间(以毫秒为单位)。

NX -仅在键不存在时设置锁。

XX-只有在键已存在时才设置。

方式1(使用set命令实现)

使用redis的set命令实现获取分布式锁

@param lockkey 可以就是锁

@param requestId  请求ID,保证同一性

@param expireTime 过期时间,避免死

 

技术图片

 方式2(使用setnx命令实现)

技术图片

4.2释放锁

技术图片

 

Redis实现分布式锁

标签:基于   sync   src   指定   避免   seconds   mil   ram   ISE   

原文地址:https://www.cnblogs.com/liyalong/p/12247460.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!