Redisson分布式锁

  1. 使用Redis自带数据结构实现分布式锁和 Redisson 分布式锁

使用Redis自带数据结构实现分布式锁和 Redisson 分布式锁

SET NX EX

redis自带的数据结构 set 可以实现简易的分布式锁。但有如下几个缺陷:

1、无法实现可重试。当线程无法获取锁时就立即返回,不会重试。

2、无法实现可重入。

3、无法超时续约。只能通过 EX 设置获取锁后自动过期时间,但这并不安全,当某个业务执行的时间较长时,如果锁自动释放了,存在安全隐患。

Redisson 如何解决这些缺陷的?

  • 可重入:利用 hash 结构记录锁标识和重试次数。
  • 可重试:利用发布/订阅机制实现等待、唤醒,锁的重试。
  • 超时续约:利用 watchDog,当锁还被线程占用时,自动更新锁时间以此避免自动释放锁。

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1216271933@qq.com

×

喜欢就点赞,疼爱就打赏