死锁问题
获取锁的进程在锁未释放时终止,其他进程无法获取到锁,形成死锁
解决死锁问题?
原子操作设置过期时间
过期时间的两个问题
- 未执行完key就过期,导致其他进程获取到锁:锁续期
- 删除到其他线程的锁:设定不冲突的key值
提升redis锁性能
分段锁
比如把相同的商品的id分段
集群引发的问题
主服务器加锁,未同步到从服务器就挂掉,选举的新的主服务器没有加锁
Redis红锁方案
- 存活的Redis服务器有一半加锁成功,才算成功
- 实现工具:redission
JVM的STW对Redis影响
拿到锁后,JVM发生STW,锁无法续期,其他进程可以拿到锁