redis分布式锁我们用的是Redisson,它的实现原理是:
我们要对某个key加锁,redisson在集群环境下会分配一个节点,先判断这个key是否会存在
如果不存在则新增key并设置过期时间默认30s
然后内置的看门狗机制会每隔10秒查看这个锁是否存在,如果10秒后加的锁还存在就续期;
直到不存在后证明锁已被释放;如果锁被释放则删除key;底层是lua脚本执行的,所以能保证执行过程的原子性;
redisson加锁时有两种方式,阻塞式和非阻塞式,代码示例如下:
1 | try { |
redis分布式锁我们用的是Redisson,它的实现原理是:
我们要对某个key加锁,redisson在集群环境下会分配一个节点,先判断这个key是否会存在
如果不存在则新增key并设置过期时间默认30s
然后内置的看门狗机制会每隔10秒查看这个锁是否存在,如果10秒后加的锁还存在就续期;
直到不存在后证明锁已被释放;如果锁被释放则删除key;底层是lua脚本执行的,所以能保证执行过程的原子性;
redisson加锁时有两种方式,阻塞式和非阻塞式,代码示例如下:
1 | try { |