谈谈 Redis 如何来实现分布式锁

谈谈 Redis 如何来实现分布式锁

基于 setnx 可以实现,但是不是可重入的。

基于 Hash 数据类型 + Lua脚本 可以实现可重入的分布式锁。

获取锁的 Lua 脚本:

释放锁的 Lua 脚本:

但是还是存在分布式问题,比如说,一个客户端在Redis主节点上面加了锁,但是由于主从同步的延迟问题,Redis从节点还没有同步到这个锁数据,这时候其他的客户端就可以在这个Redis从节点上面加相同的锁了。

引入 RedLock 解决方案。但是 RedLock 只是减少出问题的概率,而且性能差,不推荐使用。这玩意儿就是一种理论设计,平时工作用 setnx+补偿就行了

相关推荐
藓类少女1 小时前
正则表达式
数据库·python·mysql·正则表达式
魏 无羡2 小时前
pgsql 分组查询方法
java·服务器·数据库
szcsd1234567892 小时前
简单有效关于msvcp140.dll丢失的解决方法,msvcp140.dll修复的方法原理及步骤
数据库·dll文件·dll修复工具·dll修复·dll丢失
江凡心2 小时前
Qt 每日面试题 -1
服务器·数据库·qt
好记忆不如烂笔头abc2 小时前
db2恢复数据库
数据库
Counter-Strike大牛3 小时前
MySQL迁移达梦报错,DMException: 第1 行附近出现错误: 无效的表或视图名[ACT_GE_PROPERTY]
java·数据库
小诸葛的博客4 小时前
pg入门18—如何使用pg gis
数据库
林太白5 小时前
❤Node09-用户信息token认证
数据库·后端·mysql·node.js
我爱娃哈哈5 小时前
MySQL 优化器:理解与探秘
数据库·mysql
bubble小拾5 小时前
Kafka日志索引详解与常见问题分析
分布式·kafka