APPEND
append key value
自版本2.0.0可用
时间复杂度:O(1)
此命令的作用是在指定的key对应的value后面,追加字符串。使用此命令时,有两种结果:
- 如果key已经存在,那么就在对应的value基础上进行追加;
- 如果key不存在,那么就会创建一个key和对应的value,这种情况类似set命令。
返回值
进行拼接或者创建后,当前key对应的value值的长度。
示例
1 | redis> exists mykey |
时间序列
这一段内容我并不是很理解,所以暂时保留我的理解。
DECR
decr mykey num
自版本1.0.0可用
时间复杂度:O(1)
SET
SET key value [EX seconds | PX milliseconds | EXAT timestamp | PXAT milliseconds-timestamp | KEEPTTL] [NX | XX] [GET]
自版本1.0.0可用
时间复杂度:O(1)
向内存中设置一个key-value形式的键值对,更多的能力请参加可选项。
可选项
如我所示,SET命令支持多个可选项,可选项的不同,也会导致命令的效果不同。
EX seconds
: 给这个key设置过期时间,以秒为单位。1
2
3## 设置key-value键值对,并指定在10秒后过期
redis> set key value ex 10
"OK"PX milliseconds
: 给这个key设置过期时间,以毫秒为单位。1
2
3## 设置key-value键值对,并指定在100毫秒后过期
redis> set key value px 100
"OK"EXAT timestamp-seconds
: 设置一个以秒为单位的时间戳,key将会在这个指定的时间点失效。1
2
3## 设置key-value键值对,并指定在2021年12月12日0时0分1秒时过期
redis> set key value EXAT 1639238401
"OK"PXAT timestamp-milliseconds
: 设置一个以毫秒为单位的时间戳,key将会在这个指定的时间点失效。同EXAT相比,PXAT能够将时间精确到毫秒值。1
2
3## 设置key-value键值对,并指定在2021年12月12日0时0分1秒时过期
redis> set key value PXAT 1639238401000
"OK"NX
: key不存在,则设置成功;否则,设置失败。1
2
3
4
5## 使用NX可选项设置两次key-value键值对,第二次会设置失败
redis> set key value NX
"OK"
redis> set key value2 NX
(nil)XX
: key存在,则设置成功;否则,设置失败。1
2
3
4
5
6
7## 直接使用XX可选项设置key-value键值对,会设置失败;如果先设置一次,再使用XX可选项,则会设置成功
redis> set key value XX
(nil)
redis> set key value
"OK"
redis> set key value2 XX
"OK"KEEPTTL
:继承当前key被覆盖前的过期时间。一般来说,如果执行set key value命令时,如果key已经存在,那么不管之前这个key是否存在过期时间,都会被覆盖掉。此时,如果需要仅仅修改value值而不影响过期时间,则需要KEEPTTL这个可选项。1
2
3
4
5
6
7## 先设置一个200秒后过期的key-value键值对,然后使用keepttl进行重新赋值,过期时间不变
redis> set key value ex 200
"OK"
redis> set key value2 keepttl
"OK"
redis> ttl key
(integer)190GET
:返回当前key存储的旧值,如果key不存在,就返回nil。如果value不是string类型,将会返回error。1
2
3
4
5## get能够返回旧值,如果key不存在,将返回nil
redis> set key value get
(nil)
redis> set key value2 get
"value"注意:从SET命令的可选项可以看出,SET命令可以完成SETNX、SETEX、PSETEX、GETSET这几个命令的能力。因此,在未来的Redis版本中,这些命令可能会被弃用并删除。
返回值
OK
:如果SET命令被正确执行,将会被返回;nil
:在使用NX或者XX可选项时,如果不满足条件,会返回nil;或者在使用GET可选项时,key不存在的情况下,也会返回nil;- 旧值:在使用GET可选项时,将会返回旧值。
SETEX
SETEX key seconds value
自版本2.0.0可用
时间复杂度:O(1)
ex是expire这个单词的缩写,可以将这个命令理解为:set and expire。中文含义就是在内存中设置一个key-value键值对,并指定在seconds秒之后失效。需要注意的是,setex是一个原子操作,这一特点对于缓存极其重要。
示例
1 | ## 设置一个key-value键值对,并在10秒后过期 |
SETNX
SETNX key value
自版本1.0.0可用
时间复杂度:O(1)
nx是not exists的简写,可以将这个命令理解为:set if not exists。中文含义就是在key不存在的情况下才set,如果key已经存在,那么什么操作都不会发生。这一特性对于分布式锁很重要。
返回值
这个命令的返回值只有两种情况:
- 1:set成功;
- 0:set失败;
示例
1 | redis> setnx key value |