Redis APPEND 命令
语法
1 | APPEND key value |
可用版本
≥ 2.0.0
时间复杂度
$O(1)$
假设附加的值很小,并且已经存在的值是任何大小,摊销后的时间复杂度是O(1),因为Redis使用的动态字符串库会在每次重新分配时将可用空间增加一倍。
如果追加的值比较小,而当前已经存在的值大小任意,那么摊销后的时间复杂度是 $O(1)$,因为 Redis 使用的动态字符串库会在每次重新分配时将可用空间增加一倍。
ACL类别
@write
, @string
, @fast
如果 key
已经存在并且它的值的数据类型是字符串,APPEND
命令会将 value
追加到该 key
原来的值的末尾。如果 key
不存在, APPEND
就简单地将给定 key
设为 value
,就像执行 SET key value
一样。
返回值
返回一个整数,表示追加操作后,key
对应值的字符串长度。
示例 1
以下例子示范了如何使用 APPEND
命令在 Redis 中追加字符串。
首先,检查 foo
键是否存在,由于返回 0,说明不存在。
然后,执行 APPEND foo "Rain"
,向 foo
键追加字符串 "Rain"
。APPEND
命令返回追加后的字符串总长度,这里是 4。
接着,再次执行 APPEND foo " rain"
,向同一个键追加字符串 " rain"
。这次 APPEND
命令返回 9,即追加后的总长度是 9。
最后,使用 GET
命令获取 foo
键的值,返回 "Rain rain"
。
1 | redis> EXISTS foo |
示例 2
以下示例演示了如果试图使用 APPEND
命令操作一个 list
类型的值,会出现什么结果。
在示例中,我们首先使用 LPUSH
命令向 listkey
键的左侧追加元素 "Rain"
,结果返回列表的新长度 1。
然后,使用 LRANGE
查看 listkey
的前 6 个元素,得到 ["Rain"]
。
接着,使用 TYPE
命令查看 listkey
所存储值的数据类型,这里是 list
类型。
最后,试图使用 APPEND
命令向 listkey
追加字符串,但是收到 WRONGTYPE 错误,这是因为 APPEND
命令仅适用于值为字符串类型的键,而 listkey
的值是 list
类型。
1 | redis> LPUSH listkey "Rain" |
(END)