前言
今天主要学习Redis分布式锁以及Redisson和分段锁。
分布式锁
当我们在同一个JVM当中,可以使用synchronized或Lock来进行上锁。但是在多节点的情况下,我们需要使用分布式锁。

Redis分布式锁
setnx命令:当值不存在时才能设置成功
expire过期时间:设置过期时间保证发生异常时候没有正常释放锁的情况。
存在的问题
1.加锁成功,设置过期时间失败
解决:加锁和过期时间一块设置;使用lua脚本
2.解锁成功,把非自己占用的锁解除
解决:使用lua脚本,判断是否为自己的锁再解除
3.锁过期,业务没执行完。
解决:乐观锁;watch dog
Redisson
基于Netty的Redis客户端
加锁原理

解锁原理

WatchDog原理
WatchDog提供一个任务未完成自动续期的功能。

分段锁
当只有一个锁的时候锁住某个商品,想要提高并发量可使用分段锁思想。

总结
今天主要分享分布式锁的部分原理以及思想。
本文探讨了Redis分布式锁原理、Redisson实现、WatchDog机制,以及分段锁在提高并发的应用。通过Lua脚本解决加锁与过期同步,并介绍了基于Netty的Redisson客户端在加解锁过程中的工作原理。
3020

被折叠的 条评论
为什么被折叠?



