【分布式架构】分布式锁Redission

一、流程图

二、lua脚本实现原理

setnx +expire实现

  1. setnx:判断key是否存在,如果不存在,则获取锁
    setnx的数据结构:<key,<key1,value>>
    key:业务声明的key
    key1:线程id
    value:次数(用来做锁重入的)
  2. expire:设置key的ttl

三、FAQ

  1. 如何保证setnx命令和expire命令的原子性
    Redis 执行 Lua 脚本可以保证原子性。这是 Redis 设计中的一个关键特性,它允许开发者在 Redis 中执行一系列命令,而这些命令要么全部执行(类似事务的mulit和exec)
  2. 如何防止当前线程的分布式锁的key被其他线程删掉
    setnx会存储线程id,删除key的时候判断下value是否是当前线程
  3. 是否支持锁重入
    支持。因为value存的是当前线程的id,每次重入会+1,方法执行完-1,当等于0时候释放锁;
  4. 分布式锁失效的场景
    先事务再加锁的场景会失效;因为并发下,锁先释放,但是事务未提交,下一个线程会读未提交的数据
相关推荐
白太岁14 小时前
Redis:(5) 分布式锁实现:原子性设置锁与 Lua 释放锁
数据库·redis·分布式
码云数智-大飞15 小时前
微前端架构落地实战:qiankun vs Module Federation 2026 深度对比与选型指南
前端·架构
闲人编程15 小时前
定时任务与周期性调度
分布式·python·wpf·调度·cron·定时人物·周期性
玩具猴_wjh15 小时前
三级缓存架构
缓存·架构
csdn_life1815 小时前
OpenClaw Skills系统深度解析:分层架构与智能扩展机制
ai·架构·openclaw
Coder_Boy_15 小时前
Java高级_资深_架构岗 核心知识点全解析(模块四:分布式)
java·spring boot·分布式·微服务·设计模式·架构
AC赳赳老秦15 小时前
新能源AI趋势:DeepSeek分析光伏/风电数据,助力2026新能源运维升级
运维·人工智能·python·安全·架构·prometheus·deepseek
张小凡vip16 小时前
从ELK到EFK日志管理架构的演进与实战部署
elk·架构·efk
2501_9269783316 小时前
分形我思与时空同构理论:意识与宇宙的数学统一 --AGI理论系统基础9
人工智能·经验分享·架构·langchain·量子计算·agi
Francek Chen16 小时前
【大数据存储与管理】分布式文件系统HDFS:03 HDFS的相关概念
大数据·hadoop·分布式·hdfs