码界工坊

htykm.cn
人生若只如初见

redis 分布式锁的缺陷是什么?

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

  一、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同时拥有锁。

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

  · 互斥性:在任何时刻,对于同一条数据,只有一台应用可以获取到分布式锁;

  · 高可用性:在分布式场景下,一小部分服务器宕机不影响正常使用,这种情况就需要将提供分布式锁的服务以集群的方式部署;

  · 防止锁超时:如果客户端没有主动释放锁,服务器会在一段时间之后自动释放锁,防止客户端宕机或者网络不可达时产生死锁;

  · 独占性:加锁解锁必须由同一台服务器进行,也就是锁的持有者才可以释放锁,不能出现你加的锁,别人给你解锁了。

未经允许不得转载 » 本文链接:http://htykm.cn/html/90e4999860.html

推荐文章

  • 怎样升级Debian FTP Server

    要升级Debian FTP Server,首先需要确保你的系统是最新的,然后按照以下步骤进行操作:准备工作备份数据:在进行任何系统升级之前,请务必备份所有重要数据和配置文件,以防升级过程中出现问题。检 ...

  • 如何监控Debian Extract效果

    要监控Debian Extract我猜您可能是指Debian的软件包提取或安装过程)的效果,您可以采取以下几种方法:查看日志文件:Debian系统通常会在/var/log目录下记录各种系统和应用程序的 ...

  • centos分卷需要哪些准备工作

    在CentOS系统中进行磁盘分卷LVM分卷)之前,需要做好充分的准备工作,以确保数据的安全性和操作的顺利进行。以下是进行CentOS分卷所需准备工作的详细步骤:准备工作备份数据:在进行任何分区操作之前 ...

  • Ubuntu进程如何进行更新与升级

    在Ubuntu系统中,更新和升级进程是非常重要的,以确保系统的安全性和稳定性。以下是详细的步骤和命令,帮助你进行系统的更新和升级。更新进程检查更新:打开终端Ctrl+Alt+T),输入以下命令来检查是 ...

  • SecureCRT中如何传输文件

    在SecureCRT中传输文件有多种方法,以下是其中两种常用的方法:Zmodem传输:这种方法需要终端支持Zmodem协议。在SecureCRT会话窗口中,点击菜单Options→ Session O ...

  • Ubuntu中C++文件操作怎么写

    在Ubuntu系统中,使用C++进行文件操作主要依赖于C++标准库中的头文件。以下是一个简单的示例,展示了如何在C++中进行文件的读写操作:1. 包含必要的头文件#include #include # ...

  • Debian挂载加密分区步骤

    在Debian系统中挂载加密分区,通常使用LUKSLinux Unified Key Setup)进行磁盘加密。以下是详细的步骤指南:1. 安装必要的软件包首先,确保你的系统上安装了cryptsetu ...

  • ubuntu yum如何搜索软件

    在 Ubuntu 系统中,通常使用 apt包管理器来搜索、安装和管理软件包。如果你想用命令行搜索软件包,可以使用以下命令:搜索软件包:apt search 例如,要搜索与“nginx”相关的软件包,可 ...