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

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

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

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

获取锁的 Lua 脚本:

释放锁的 Lua 脚本:

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

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

相关推荐
蒋士峰DBA修行之路20 分钟前
实验九 合理定义分布列实现性能优化-分布式聚集
分布式
得意霄尽欢1 小时前
Redis之底层数据结构
数据结构·数据库·redis
hsjkdhs1 小时前
MySQL 数据类型与运算符详解
数据库·mysql
echoyu.1 小时前
消息队列-kafka完结
java·分布式·kafka
七夜zippoe1 小时前
分布式事务性能优化:从故障现场到方案落地的实战手记(二)
java·分布式·性能优化
吐泡泡_2 小时前
Redis(集群)
redis
爱吃烤鸡翅的酸菜鱼2 小时前
【Redis】常用数据结构之Hash篇:从常用命令到使用场景详解
数据结构·数据库·redis·后端·缓存·哈希算法
李少兄2 小时前
IntelliJ IDEA 启动项目时配置端口指南
数据库·sql·intellij-idea
NineData3 小时前
NineData云原生智能数据管理平台新功能发布|2025年8月版
数据库·mongodb·云原生·数据库管理工具·ninedata·数据库迁移·数据复制
白云如幻3 小时前
【Java】QBC检索和本地SQL检索
java·数据库·sql