您当前的位置:首页 > 电脑百科 > 数据库 > Redis

redis实现分布式锁天然的缺陷

时间:2021-07-07 09:55:53  来源:urlify  作者:mushishi

作者 | mushishi

来源 | urlify.cn/Mry6bi

redis分布式锁基本原理

采用 redis 实现分布式锁,主要是利用其单线程命令执行的特性,一般是 setnx, 只会有一个线程会执行成功,也就是只有一个线程能成功获取锁;看着很完美

看看可能有什么问题?

一般生产环境为了可用性,redis 会部署 master-slave + sentinel 的结构, 如:

redis实现分布式锁天然的缺陷

 


master 提供服务、slave standby 作为备份节点不提供服务, master异步将数据复制给 slave 以保证数据一致, sentinel哨兵检查 master节点,当master节点故障时 将slave节点提升为 新的master 对外提供服务;

正常情况下,都是当前 master 对外提供服务,多个线程 setnx 只会有一个成功

redis实现分布式锁天然的缺陷

 

当 master 故障时

线上环境嘛,总会有各种各样的故障出现,这也是为什么要部署 ha 的原因;

我们设想,thread-1 setnx a 1 成功后,master节点发生故障;但是,此时 a=1 这条数据还没来得及同步到 slave 节点,然后 sentinel 哨兵会进行故障切换将 slave 提升上来对外提供服务, 然后 thread-2 来 setnx a 1 加锁,因为之前锁状态在 slave 不存在,那这时候 thread-2 也会加锁成功, 这个时候锁的语义就被破坏了

redis实现分布式锁天然的缺陷

 

 



Tags:redis   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
一、自动注入没有添加泛型问题自定义RedisTemplate<String,Object>后,在使用时,需要在自动注入的RedisTemplate中添加泛型为RedisTemplate<String,Object>,否则会报错:com.fast...【详细内容】
2022-11-01  Tags: redis  点击:(5)  评论:(0)  加入收藏
Redis作为内存数据库,拥有非常高的性能,单个实例的QPS能够达到10W左右。但我们在使用Redis时,经常时不时会出现访问延迟很大的情况,如果你不知道Redis的内部实现原理,在排查问题时就会一头雾水。...【详细内容】
2022-11-01  Tags: redis  点击:(5)  评论:(0)  加入收藏
HyperLogLog,可能很多人对Redis这个功能都很陌生,在日常开发中也很少用到它,或者用了它也没有深入的了解过,下面我们将详细介绍。HyperLogLog简称HLL,它是LogLog算法的升级版,其功...【详细内容】
2022-10-26  Tags: redis  点击:(10)  评论:(0)  加入收藏
下载地址:下载界面:下载好之后进行安装安装界面下一步安装路径的改动默认下一步继续下一步安装点击完成这是我们的安装目录最简单的启动方式是直接双击redis-server.exe如果要...【详细内容】
2022-10-10  Tags: redis  点击:(18)  评论:(0)  加入收藏
很难大规模操作有状态的分布式系统,Redis 也不例外。托管数据库通过承担大部分繁重工作使生活变得更轻松。但是您仍然需要一个健全的架构并在服务器(Redis)和客户端(应用程序)上...【详细内容】
2022-10-08  Tags: redis  点击:(19)  评论:(0)  加入收藏
Apache Kafka 已成为大多数技术栈中的主流组件。使用 Kafka 的好处包括确保事件中的因果顺序,同时保持并行性,通过在服务器之间快速复制分区来恢复故障,等等。 然而,运行 Kafka...【详细内容】
2022-10-04  Tags: redis  点击:(36)  评论:(0)  加入收藏
一、背景公司基于业务发展以及战略部署,需要实现在多个数据中心单元化部署,一方面可以实现多数据中心容灾,另外可以提升用户请求访问速度。需要保证多数据中心容灾或者实现用户...【详细内容】
2022-09-28  Tags: redis  点击:(43)  评论:(0)  加入收藏
一、RedisInsight 简介RedisInsight 是一个高颜值,直观高效的 Redis GUI 管理工具,它可以对 Redis 的内存、连接数、命中率以及正常运行时间进行监控,并且可以在界面上使用 CL...【详细内容】
2022-09-18  Tags: redis  点击:(105)  评论:(0)  加入收藏
一、Redis为什么那么快 QPS达到10万/秒 用C语言实现 基于内存 单线程,不用线程上下文切换及加锁二、redis数据类型 String,常见的缓存,存储登录session等 hash,存储对象,单独修...【详细内容】
2022-09-16  Tags: redis  点击:(74)  评论:(0)  加入收藏
1、集群原理简介1.1、什么是集群?什么是分区?集群简单的说就是将同一个服务部署在不同的机器上,从而提高服务的横向扩展能力。分区就是将数据分布在多个实例(服务器)上,让每一个实...【详细内容】
2022-09-15  Tags: redis  点击:(54)  评论:(0)  加入收藏
▌简易百科推荐
Redis作为内存数据库,拥有非常高的性能,单个实例的QPS能够达到10W左右。但我们在使用Redis时,经常时不时会出现访问延迟很大的情况,如果你不知道Redis的内部实现原理,在排查问题时就会一头雾水。...【详细内容】
2022-11-01  呆萌小可萘日常    Tags:Redis   点击:(5)  评论:(0)  加入收藏
HyperLogLog,可能很多人对Redis这个功能都很陌生,在日常开发中也很少用到它,或者用了它也没有深入的了解过,下面我们将详细介绍。HyperLogLog简称HLL,它是LogLog算法的升级版,其功...【详细内容】
2022-10-26  搬长你好  今日头条  Tags:Redis   点击:(10)  评论:(0)  加入收藏
下载地址:下载界面:下载好之后进行安装安装界面下一步安装路径的改动默认下一步继续下一步安装点击完成这是我们的安装目录最简单的启动方式是直接双击redis-server.exe如果要...【详细内容】
2022-10-10  分享电脑学习  搜狐号  Tags:Redis   点击:(18)  评论:(0)  加入收藏
很难大规模操作有状态的分布式系统,Redis 也不例外。托管数据库通过承担大部分繁重工作使生活变得更轻松。但是您仍然需要一个健全的架构并在服务器(Redis)和客户端(应用程序)上...【详细内容】
2022-10-08  qaseven  网易号  Tags:Redis   点击:(19)  评论:(0)  加入收藏
Apache Kafka 已成为大多数技术栈中的主流组件。使用 Kafka 的好处包括确保事件中的因果顺序,同时保持并行性,通过在服务器之间快速复制分区来恢复故障,等等。 然而,运行 Kafka...【详细内容】
2022-10-04  解道Jdon  今日头条  Tags:Redis   点击:(36)  评论:(0)  加入收藏
一、背景公司基于业务发展以及战略部署,需要实现在多个数据中心单元化部署,一方面可以实现多数据中心容灾,另外可以提升用户请求访问速度。需要保证多数据中心容灾或者实现用户...【详细内容】
2022-09-28  京东云    Tags:Redis   点击:(43)  评论:(0)  加入收藏
一、RedisInsight 简介RedisInsight 是一个高颜值,直观高效的 Redis GUI 管理工具,它可以对 Redis 的内存、连接数、命中率以及正常运行时间进行监控,并且可以在界面上使用 CL...【详细内容】
2022-09-18  Python部落  今日头条  Tags:Redis   点击:(105)  评论:(0)  加入收藏
一、Redis为什么那么快 QPS达到10万/秒 用C语言实现 基于内存 单线程,不用线程上下文切换及加锁二、redis数据类型 String,常见的缓存,存储登录session等 hash,存储对象,单独修...【详细内容】
2022-09-16  互联网资讯看板  网易号  Tags:Redis   点击:(74)  评论:(0)  加入收藏
1、集群原理简介1.1、什么是集群?什么是分区?集群简单的说就是将同一个服务部署在不同的机器上,从而提高服务的横向扩展能力。分区就是将数据分布在多个实例(服务器)上,让每一个实...【详细内容】
2022-09-15  互联共商   网易号  Tags:Redis集群   点击:(54)  评论:(0)  加入收藏
Redis 的持久化方式有两种:AOF 日志和 RDB 快照。所以接下来,针对这两种持久化方式具体分析分析...【详细内容】
2022-09-14  IT互联网新资讯  今日头条  Tags:Redis   点击:(51)  评论:(0)  加入收藏
站内最新
站内热门
站内头条