
回复
作者 | 哪吒
来源 |哪吒编程(ID:gh_61b183bcf690)
分布式锁是 满足分布式系统或集群模式下多进程可见并且互斥的锁。
基于Redis实现分布式锁:
添加锁过期时间,避免服务宕机引起死锁。
SET lock thread1 NX EX 10
在释放锁时,释放线程自己的分布式锁,就可以解决这个问题。
SETNX
实现的分布式锁存在下面几个问题同一个线程无法多次获取同一把锁。
获取锁只尝试一次就返回false,没有重试机制。
锁的超时释放虽然可以避免死锁,但如果业务执行耗时较长,也会导致锁释放,存在安全隐患。
如果Redis是集群部署的,主从同步存在延迟,当主机宕机时,此时会选一个从作为主机,但是此时的从没有锁标识,此时,其它线程可能会获取到锁,导致安全问题。
Redisson是一个在Redis的基础上实现的Java驻内存数据网格。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务,其中包含各种分布式锁的实现。
更新有效期,递归调用更新有效期,永不过期