redis 分布式锁有什么缺陷

redis 分布式锁的缺陷:1、客户端长时间阻塞导致锁失效问题;2、redis服务器时钟漂移问题;3、单点实例安全问题。客户端长时间阻塞导致锁失效问题是指,某个客户端得到了锁,因为某些原因导致长时间阻塞,然后业务程序还没执行完锁就过期了。

redis 分布式锁有什么缺陷-Worktile社区

一、redis 分布式锁的缺陷

1、客户端长时间阻塞导致锁失效问题

客户端1得到了锁,因为网络问题或者GC等原因导致长时间阻塞,然后业务程序还没执行完锁就过期了,这时候客户端2也能正常拿到锁,可能会导致线程安全的问题。

2、redis服务器时钟漂移问题

如果redis服务器的机器时钟发生了向前跳跃,就会导致这个key过早超时失效,比如说客户端1拿到锁后,key的过期时间是12:02分,但redis服务器本身的时钟比客户端快了2分钟,导致key在12:00的时候就失效了,这时候,如果客户端1还没有释放锁的话,就可能导致多个客户端同时持有同一把锁的问题。

3、单点实例安全问题

如果redis是单master模式的,当这台机宕机的时候,那么所有的客户端都获取不到锁了,为了提高可用性,可能就会给这个master加一个slave,但是因为redis的主从同步是异步进行的,可能会出现客户端1设置完锁后,master挂掉,slave提升为master,因为异步复制的特性,客户端1设置的锁丢失了,这时候客户端2设置锁也能够成功,导致客户端1和客户端2同时拥有锁。

二、分布式锁需要满足的特性

  • 互斥性:在任何时刻,对于同一条数据,只有一台应用可以获取到分布式锁;
  • 高可用性:在分布式场景下,一小部分服务器宕机不影响正常使用,这种情况就需要将提供分布式锁的服务以集群的方式部署;
  • 防止锁超时:如果客户端没有主动释放锁,服务器会在一段时间之后自动释放锁,防止客户端宕机或者网络不可达时产生死锁;
  • 独占性:加锁解锁必须由同一台服务器进行,也就是锁的持有者才可以释放锁,不能出现你加的锁,别人给你解锁了。

延伸阅读

布式锁应该具备的条件

  • 在分布式系统环境下,一个方法在同一时间只能被一个机器的一个线程执行
  • 高可用的获取锁与释放锁
  • 高性能的获取锁与释放锁
  • 具备可重入特性(可理解为重新进入,由多于一个任务并发使用,而不必担心数据错误)
  • 具备锁失效机制,即自动解锁,防止死锁
  • 具备非阻塞锁特性,即没有获取到锁将直接返回获取锁失败

文章标题:redis 分布式锁有什么缺陷,发布者:Z, ZLW,转载请注明出处:https://worktile.com/kb/p/34730

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
Z, ZLWZ, ZLW站长
上一篇 2023年1月8日 上午6:40
下一篇 2023年1月8日 上午6:59

相关推荐

  • 如何绘制甘特图

    以使用edraw为例,演示如何绘制甘特图:1、打开甘特图模板;2、在甘特图中添加任务;3、在甘特图中添加子任务;4、编辑任务优先级;5、如何改变任务的时间轴;6、甘特图中不同的任务类型;7、分享甘特图。甘特图模板一共有三种类型。 1、打开甘特图模板 在“工程管理”中打开“甘特图”模板。一共有三种类型…

    2023年2月14日
    38400
  • 学SAP ABAP跟JAVA大的区别是什么呀

    区别是:SAP是SAP公司的产品——企业管理解决方案的软件名称。SAP最初开发ABAP/4语言仅为内部使用,为应用程序员提供优化的工作环境。ABAP是一种高级企业应用编程语言,和最近引入的Java一起,ABAP主要用作SAP的编程。Java是一种面向对象的编程语言,运用广泛。 SAP SAP,为“S…

    2023年2月13日
    42000
  • 数据库是基于什么协议链接的呢

    数据库常用的协议链接有:一、TCP/IP协议;二、HTTP协议;三、JDBC协议。TCP/IP协议是一种基于传输控制协议和互联网协议的网络协议。它是互联网通信的基础,也是数据库链接协议的主要方式之一。在TCP/IP协议下,数据库客户端通过TCP协议连接到数据库服务器。 一、TCP/IP协议 TCP/…

    2023年5月31日
    84900
  • 别被《人月神话》毒害,“组织越大效率越低”是误区

    绩效考核是所有技术管理者的“持久的痛”。在本文中,方云研发绩效创始人于人从绩效的概念开始,分析绩效考核与绩效管理的异同,从四维组织力模型出发分享绩效管理的实用方法,并提供远程办公下应关注的绩效指标,助力大家化危为机,一同度过难忘的远程办公时期。 PS:文末有福利 转自TGO鲲鹏会 作者 | 于人 整…

    2022年3月20日 技术资讯
    32800
  • CRM系统有哪些?2022年10大 CRM 客户关系管理软件(含免费、付费、开源)

    10大CRM客户关系管理软件:1、纷享销客;2、销售易;3、Salesforce;4、HubSpot;5、金蝶EAS CRM;6、悟空CRM;7、Zoho CRM;8、Teamgate CRM;9、SAP CRM;10、Freshsales CRM。 据天眼查检索,目前国内CRM服务商1410家,今…

    2022年11月29日
    2.1K00
  • 监控项目具体包括什么工作

    监控项目具体包括以下工作:1、开展基层局部监控;2、分析和预测的结果;3、开展高层全局监控;4、审批变更请求;5、处理其他问题。开展基层局部监控指监督风险、沟通和相关方参与过程,得到工作绩效信息,分析绩效偏差的程度和原因,并预测未来绩效。 1、开展基层局部监控 确认范围、控制范围、进度、成本、质量、…

    2023年1月17日
    32300
  • 产品管理怎么做

    产品管理怎么做:1、产品规划;2、需求管理;3、产品设计;4、产品开发与测试;5、产品验收与交付。其中,产品规划是指,产品经理在这个环节首先需要对市场和目标客户有透彻的了解,评估外在发展机会与风险。 一、产品规划 产品研发管理的名列前茅步,就是产品规划。产品经理在这个环节首先需要对市场和目标客户有透…

    2023年4月17日
    17000
  • 如何在远程工作环境中保持研发效能

    在当前的职场环境中,远程工作成为了一种普遍模式,然而,维持和提升研发效能依然是众多企业追求的目标。主要策略有1、明确目标和期望;2、使用正确的工具和平台;3、建立有效的沟通机制;4、制定团队协作协议;5、追踪进度和绩效;6、关注员工福祉。实施这些策略能够帮助远程研发团队保持清晰的方向,利用合适的技术…

    2023年11月17日
    1000
  • 团队协同的意思是什么

    团队协同的意思是:1、团队成员的协作;2、个人目标的达成;3、团队目标的实现;4、组织环境的优化;5、员工与团队之间的协作氛围和文化。团队协同是指将成员(团队成员)的工作有机地结合起来,发挥各自优点和作用。 团队协同的意思是什么 团队协同是指将成员(团队成员)的工作有机地结合起来,发挥各自优点和作用…

    2022年11月14日
    59500
  • 产品管理中的敏捷开发是什么意思

    敏捷开发(Agile Development)在产品管理中指的是一种以人为核心、迭代、快速和灵活的开发方法。主要包括以下几个核心观点:一、以人为中心,强调团队协作;二、短周期、高频次的迭代;三、客户参与和反馈;四、灵活性和适应性。该方法主要解决了传统瀑布式开发模式下的各种问题,例如开发周期长、变更困…

    2023年9月22日
    7900

发表回复

登录后才能评论
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部