分布式锁的基本功能:
1.同一时刻只能存在一个锁
2.需要解决意外死锁问题,也就是锁能超时自动释放
3.支持主动释放锁
分布式锁解决什么问题:
多进程并发执行任务时,需要保证任务的有序性或者唯一性
准备:
redis版本>=2.6
redis是主从+sentinel模式(为了高可用)
原理:
redis2.6之后,SET命令支持超时和key存在检查,这是一个原子操作
获取锁并设置超时时间:
SET key value [EX seconds] [PX milliseconds] [NX|XX]
删除锁:
DEL key
EX:单位是秒
PX:单位是毫秒
NX:如果key存在,返回nil(失败),不存在返回ok
XX:如果key存在,返回ok,不存在返回nil(失败)
基本操作如图示:
1.同一时刻只能存在一个锁
2.需要解决意外死锁问题,也就是锁能超时自动释放
3.支持主动释放锁
分布式锁解决什么问题:
多进程并发执行任务时,需要保证任务的有序性或者唯一性
准备:
redis版本>=2.6
redis是主从+sentinel模式(为了高可用)
原理:
redis2.6之后,SET命令支持超时和key存在检查,这是一个原子操作
获取锁并设置超时时间:
SET key value [EX seconds] [PX milliseconds] [NX|XX]
删除锁:
DEL key
EX:单位是秒
PX:单位是毫秒
NX:如果key存在,返回nil(失败),不存在返回ok
XX:如果key存在,返回ok,不存在返回nil(失败)
基本操作如图示: