Redisson实现的分布式锁能解决主从一致性的问题吗?

这个是不能的。比如,当线程1加锁成功后,master节点数据会异步复制到slave节点,此时如果当前持有Redis锁的master节点宕机,slave节点被提升为新的master节点,假如现在来了一个线程2,再次加锁,会在新的master节点上加锁成功,这个时候就会出现两个节点同时持有一把锁的问题。

我们可以利用Redisson提供的红锁来解决这个问题,它的主要作用是,不能只在一个Redis实例上创建锁,应该是在多个Redis实例上创建锁,并且要求在大多数Redis节点上都成功创建锁,红锁中要求是Redis的节点数量要过半。这样就能避免线程1加锁成功后master节点宕机导致线程2成功加锁到新的master节点上的问题了。

但是,如果使用了红锁,因为需要同时在多个节点上都添加锁,性能就变得非常低,并且运维维护成本也非常高,所以,我们一般在项目中也不会直接使用红锁,并且官方也暂时废弃了这个红锁。

相关推荐
人道领域1 分钟前
Day | 09 【苍穹外卖:订单售后业务】
java·数据库·后端
minji...4 分钟前
Linux 进程间通信(一)进程间通信与匿名管道
linux·运维·服务器·数据结构·数据库·c++
XDHCOM8 分钟前
ORA-12532: TNS:invalid argument 故障解析,Oracle报错远程处理技巧与修复方法分享
数据库·oracle
码农的小菜园9 分钟前
Java线程池学习笔记
java·笔记·学习
IMPYLH13 分钟前
Linux 的 csplit 命令
linux·运维·服务器·数据库
cm65432019 分钟前
使用XGBoost赢得Kaggle比赛
jvm·数据库·python
星辰_mya21 分钟前
利用 BeanPostProcessor 实现动态增强与框架开发
数据库
tobias.b23 分钟前
计算机基础知识-计算机组成原理
考研·面试·职场和发展
hongtianzai23 分钟前
Laravel8.x核心特性全解析
java·c语言·开发语言·golang·php
qq_4160187223 分钟前
游戏与图形界面(GUI)
jvm·数据库·python