Redis中的setnx是原子性的?

setnx 的原子性不是它自己实现的,而是"白嫖"了 Redis 单线程模型的红利。

在 Redis 里,命令是一条一条排队执行的。setnx 内部做两件事:检查 key 是否存在、不存在就设置。这两步在同一个命令里完成,中间不会被其他命令插入。所以对外看起来,setnx 就是"要么设置成功,要么什么都没发生",天然原子。

如果 Redis 是多线程的,setnx 内部这两步就可能被其他线程插入,那就需要加锁来保证原子性了。但 Redis 单线程,省了这些麻烦。

换句话说,原子性的来源有两个层次:

命令内部:SETNX 的实现把检查和写入放在一个函数里,中间没有"交出控制权"的机会。

命令之间:Redis 单线程,一个命令执行完才会执行下一个,所以 SETNX 执行期间不会被别的命令插入。

两者合起来,才让 SETNX 对外表现为"要么设置成功,要么什么都没发生"。

详细内容请看链接:https://www.vastark.cn/interviewer/problems/4b

模拟练习效果请看: https://www.vastark.cn/interviewer/ai-interview?page_id=P6A97EA7DAF\&site_id=S6A97D1FEAF

相关推荐
updayday8541 小时前
供应商补交资质文件时,采购难以核对缺件和新版本 - Ping64 文件收集
大数据·网络·数据库·安全·智能路由器
PaperData1 小时前
2012-2025年省市区县政府周边的夜间灯光亮度及是否加班数据
数据库
Light601 小时前
四款云端 Agent 的安全边界画在三个地方
大数据·数据库·安全·个人agent·安全边界·提示注入·grok bot
IvorySQL2 小时前
PostgreSQL 日报| pg_vectorsearch 开源向量搜索发布(10 月 14 日)
数据库·人工智能·postgresql·开源·区块链
m0_587383002 小时前
碰碰好评卡功能落地全流程实战指南 附核心逻辑与常见问题解决方案
java·前端·数据库·后端·struts·需求分析
Y3815326622 小时前
SerpBase + RAG 实战:用搜索 API 给知识库接上实时数据,回答不再过期
java·服务器·数据库
骑着蜗牛撵大象3272 小时前
SQL 编辑器不是高级记事本:KStudio 与 KSQL Developer 里的建表与增删改查手法
数据库·sql·mysql·编辑器·crud·执行计划
Access开发易登软件2 小时前
我全新开发了一套 Access 通用 Excel 导入工具,现在开源了
数据库·microsoft·excel·mfc·vba·access·access开发
笃行3502 小时前
SQL编辑器的隐藏技能:KingbaseES 配套 KSQL Developer 使用笔记
数据库