码迷,mamicode.com
首页 > 编程语言 > 详细

springboot+redis实现分布式锁

时间:2020-04-05 17:05:13      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:还需要   设置   nbsp   创建   自己   value   删除   tps   就是   

参考

SpringBoot实现Redis分布式锁

https://www.jianshu.com/p/750ac97eb29e

 

实现原理

  • 加锁解锁

    执行逻辑之前,加锁

    执行逻辑之后,删除锁

    加锁和删除锁必须是同一个对象的行为。

  • 获取锁删除锁

    使用setnx,保证只有一个对象可以设置锁成功,只有一个对象可以拿到锁。

    (删除锁的时候,必须保证是自己创建的锁,需要验证value。

    上面参考文章中,每次设置加锁的时候,设置token,删除锁的时候,对比token)

  • 设置过期时间 

    设置锁的过期时间,为什么有删除锁的操作后,还需要设置过期时间?

    因为一旦异常,锁没有删除成功,后面的对象操作就再也获取不了锁了,就是出现死锁。

    (我觉得是不是可以通过每次设置不同的key,来解决问题)

    当然,过期时间设置成多大,又是问题。你的业务得处理多长时间。

    但是,好像如果在你的业务执行完之前,删除你的锁也没有多大的影响。

 

实现 待续

    

 

文章收藏

redis(五)-缓存三大问题及解决方案

https://blog.csdn.net/haoxin963/article/details/83245113

 

springboot+redis实现分布式锁

标签:还需要   设置   nbsp   创建   自己   value   删除   tps   就是   

原文地址:https://www.cnblogs.com/windy13/p/12637879.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!