Redis第三讲:分布式锁的三种实现方法

本文详细介绍了为什么需要分布式锁及其特性,并探讨了Redis实现分布式锁的多种方式,包括加锁、解锁、续命问题及解决方案。重点讨论了Redis的set命令和Lua脚本在加解锁中的应用,以及RedLock和Zookeeper实现分布式锁的策略。最后,总结了分布式锁的选型和实战应用,提出在不同场景下如何选择合适的分布式锁实现。
摘要由CSDN通过智能技术生成

Redis第三讲:分布式锁的三种实现方法

1、为什么需要锁?

因为我们想让同一时刻只有一个线程在执行某段代码。

  • 因为如果同时出现多个线程去执行,可能会带来我们不想要的结果,可能是数据错误,也可能是服务宕机等等。

  • 以淘宝双11为例,在0点这一刻,如果有几十万甚至上百万的人同时去查看某个商品详情页,这时候会触发商品的查询,如果我们不做控制,全部走到数据库去,那是有可能直接将数据库打垮的。

  • 这个时候一个比较常用的做法就是进行加锁,只让1个线程去查询,其他线程等待这个线程的查询结果后,直接拿结果。在这个例子中,锁用于控制访问数据库的流量,最终起到了保护系统的作用。

  • 再举个例子,某平台做活动“秒杀茅台”,假如活动只秒杀1瓶,但是同时有10万人在同一时刻去抢,如果底层不做控制,有10000个人抢到了,额外的9999瓶平台就要自己想办法解决了。此时,我们可以在底层通过加锁或者隐式加锁的方式来解决这个问题。

  • 此外,锁也经常用来解决并发下的数据安全方面的问题。

2、为什么需要分布式锁?

2.1、分布式锁是锁的一种,通常用来跟 JVM 锁做区别。
  • 应用开发时,如果需要在同进程内的不同线程并发访问某项资源&

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员 jet_qi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值