Skip to content

Latest commit

 

History

History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

README.md

springboot-redislock

最轻量级的redis分布式锁实现,实现只使用不到300行代码,只需依赖spring-data-redis,也可自行扩展Jedis。 如需使用springboot 自动装配, 切换到1.x版本即可

快速上手

实现锁的思想参考可重入锁,该分布式锁支持重入机制。

加锁模式

  • RedisLock.lock:直到加锁成功。
  • RedisLock.tryLock:尝试加锁。

准备工作

  • 引入spring-data-redis依赖: 可以在pom中直接引入,这边不多做叙述。

使用优点

加锁在一个原子操作中完成,具有redis锁失效,以及本地解锁。 会有人有疑问这样和setNx 加上 失效时间有何区别(下面简称普通方式),下面进行对比。

1.redislock 支持锁重入,使用方式与ReentrantLock 类似。 2.普通方式无法解决当前锁在分布式情况下被另外的客户端解锁的可能。

存在缺点

客户端1在Redis一个主节点获得了一个锁。主节点挂了,而主从节点的写同步还没完成(异步复制)。 从节点被提升为主节点,客户端2就有可能获得和1相同的锁。