redis底层原理

该命令的含义是set if not exists,Redis是单线程的,所有的命令都是串行执行的。而且Redis的SETNX操作是原子的,即使有大量的线程同时发送SETNX命令,Redis也会一个接一个地执行这些命令。也就是说,即使有多个线程同时使用SETNX尝试获取锁,也只有一个线程能够成功。它们的SETNX命令会进入到Redis的命令队列中等待执行。当Redis执行完当前的SETNX命令后,会依次从队列中取出命令来执行。对于大量线程同时发送SETNX命令的情况,最终只有一个线程的SETNX命令能够成功设置新的value,其他线程的SETNX命令都会因为key已经存在而失败,但实际开发中我们使用Redis做分布式锁也要考虑到锁的超时问题、锁的释放问题

锁的超时问题,setnx用作锁的时候,必须要设置一个过期时间,防止这个锁无法及时释放造成死锁,且要注意setnx和expired必须是原子性的,如果不能保证原子性,那可能由于线程调度问题expired没有生效,依然会有死锁风险,过期时间设置也要结合实际线上情况,太短会出现问题


复制代码
                        无

原文链接:https://blog.csdn.net/wwwwwww31311/article/details/136678509

相关推荐
龙腾AI白云20 小时前
仿真到现实(Sim-to-Real)迁移:跨越仿真与现实鸿沟
数据库·机器学习·plotly·知识图谱·tornado
freejackman1 天前
【实战二】字段级血缘追踪:拆解 AST 迷局,精准穿透函数链与子查询
大数据·数据库·sql
.痞老板.1 天前
mysql初阶--增删改查操作
数据库·mysql
FungLeo1 天前
成为全栈·基础补充·缓存的层次与失效:浏览器、CDN、服务端、数据库
缓存·cdn·数据一致性·http缓存·成为全栈·flutter缓存
我不会起名字3221 天前
Redis 从 0 到 1(三十三):机器断电 Redis 起不来——AOF/RDB 损坏的 4 步抢救流程
redis·数据恢复·aof·rdb·排查
lambo mercy1 天前
AI智能租房助手
数据库
浮生若城1 天前
MySQL:库与表的操作
数据库·mysql
薛定谔的悦1 天前
光储充一体机从主控到执行单元的双层架构
数据库·mongodb·架构
数字新视界1 天前
动环监控信创适配在智能机房管理中的应用价值与未来展望
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
code2cat1 天前
【随笔】KV缓存量化:省下的显存,要付出多少数值误差
人工智能·缓存·大语言模型