首页 > 编程笔记

Redis GETSET命令的用法

Redis GETSET 命令的基本语法如下:

GETSET key value

GETSET 用于将 key 的值设为 value,并返回 key 的旧值。

返回值:返回 key 的旧值。当 key 没有旧值时,返回 nil。

实例如下:
127.0.0.1:6379> SET name xinping
OK
127.0.0.1:6379> GET name
"xinping"

# name对应的值被更新,旧值被返回
127.0.0.1:6379> GETSET name xinping_new 
"xinping"
127.0.0.1:6379> GET name
"xinping_new"

接下来看一看,如果 key 不存在,那么使用 GETSET 会返回什么值?
127.0.0.1:6379> EXISTS name1
(integer) 0
127.0.0.1:6379> GETSET name1 "xinping"
(nil)
127.0.0.1:6379> GET name1
"xinping"
因为 name1 之前不存在,没有旧值,所以返回 nil。

GETSET 可以和 INCR 组合使用,实现一个有原子性复位操作功能的计数器(counter)。

可以用 GETSET mycount 0 来实现这一目标。
127.0.0.1:6379> INCR mycount
(integer) 1

# 一个原子操作内完成GET mycount和GETSET mycount 0
127.0.0.1:6379> GETSET mycount 0  
"1"

127.0.0.1:6379> GET mycount
"0"

推荐阅读