第十四天本地锁、Redis分布锁、Redisson锁三者的区别

一、为什么要有redis分布式锁,它解决了什么问题?

          在传统单体架构的项目下,使用本地锁synchronized和lock锁就可以锁住当前进程,保证线程的安全性,但是本地锁解决不了分布式环境下多个服务资源共享的问题,而分布式锁可以解决这个问题。

二、Redis分布式锁

 

1.加锁原子性--->set nxex + uuid全局唯一

2.删锁原子性--->通过redis+lua脚本

3.锁自动续期问题--->设置够长的过期时间。

最终目的:多个微服务抢占锁,最终只有一个微服务占用到锁并保证原子性。

三、Redissoon分布式锁

1、获取锁,就算锁名一样,多个微服务也是同一把锁

2、加锁是阻塞式等待,默认加的锁都是30s

3、看门狗自动续期机制:

        锁自动续期,如果业务超长,运行期间自动给锁续期上新的30s,不用担心业务时间长,锁自动过期被删除的造成的死锁问题。加锁的业务只要运行完成,就不会给当前锁续期,即使不手动解锁,锁默认在30s以后删除。

4、Redisson读写锁

读写锁:保证一定能读取到最新数据,数据修改期间,写锁是一个排它锁,读锁是一个共享锁

除了读读锁不互斥,其余锁都需要阻塞等待(互斥)。

5、闭锁
        Redisson闭锁是一种非常实用的分布式同步工具,可以帮助开发人员解决多线程并发访问共享资源的问题,可以阻塞多个线程,在多个应用程序之间共享,支持自动释放锁,防止因为线程崩溃或其他异常,例如秒杀业务只有10000件商品,用闭锁就可以实现商品不会出现超卖问题

6、Redisson信号量
        Redisson信号量是一种分布式锁,它可以控制多个线程对共享资源的访问,比如停车位,并发限流,Redisson信号量基于Redis实现,具有高性能、高可用性和可扩展性等优点。

总结:分布式架构下推荐使用Redisson分布式锁,因为原始的redis分布式锁存在两大严重问题,一是死锁问题、二是锁没有自动续期机制,而Redisson就完美解决了原始redis分布式锁的不足。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值