首页/数据/数据库速查/GETSET 与 SET ... GET(旧值返回)
Redis 命令96 条

GETSET 与 SET ... GET(旧值返回)

GETSET 设置新值并返回旧值(原子);自 Redis 6.2 起被标记废弃,推荐用 SET key value GET 达到同样效果并支持 NX/EX 等选项。

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

新旧写法对比

新旧写法对比
GETSET counter 1      # 不存在 -> (nil),counter=1
GETSET counter 2      # -> "1",counter=2

# 推荐等价写法(可叠加选项)
SET counter 3 GET     # -> "2"
SET counter 4 GET EX 60   # 返回 "3" 并设置 60s TTL
旧命令GETSET key value(deprecated since 6.2)
新写法SET key value GET [NX|XX] [EX|PX|KEEPTTL]
用途计数器换代、抢锁前的旧值读取等
Redis 7 客户端里 GETSET 仍能用,但受 ACL/命令审计约束的新环境可能直接禁用旧命令,新代码统一 SET ... GET。

易错点

  • 用 GETSET 判断键是否存在:不存在的键也会被创建(返回 nil 不代表没写入)
  • 对 Hash/List 等键使用:直接 WRONGTYPE,GETSET 只作用于字符串

数据来源与参考

  • Redis 官方文档: GETSET
  • Redis 官方文档: SET

相关工具

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