首页/数据/数据库速查/MSETNX 全不存在才批量写入
本包目录(495 条)
MySQL 基础与连接36 条SQL 语法52 条用户与权限21 条备份与恢复56 条主从复制与高可用53 条性能与调优57 条
Redis 命令96 条
Redis 运维与场景124 条

MSETNX 全不存在才批量写入

原子地批量设置多个键:仅当所有键都不存在时才全部写入,任一键已存在则整批放弃(返回 0);适合「首次初始化」类场景。

数据库速查数据更新于 2026-10-12

行为演示

行为演示
MSETNX config:mode prod config:ver 1   # 全新 -> 1(都写入)
MSETNX config:ver 2 config:x 9         # config:ver 已存在 -> 0(全不写)
MGET config:mode config:ver config:x
# 1) "prod"
# 2) "1"
# 3) (nil)
返回1=全部写入;0=任一键存在,整批放弃
原子性单命令内判断+写入原子完成
对比MSET 无条件覆盖;SET NX 是单键条件写
分布式场景常拿它做「一次性初始化」:初始化标记不存在时才写入整组配置。

易错点

  • 以为逐键条件判断:只要有一个键存在,其他键也不会写
  • Cluster 下多键必须同槽,否则 CROSSSLOT 报错

数据来源与参考

  • Redis 官方文档: MSETNX
  • Redis 官方文档: MSET

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌