![Redis使用手册](https://wfqqreader-1252317822.image.myqcloud.com/cover/837/26562837/b_26562837.jpg)
上QQ阅读APP看书,第一时间看更新
2.11 APPEND:追加新内容到值的末尾
通过调用APPEND命令,用户可以将给定的内容追加到字符串键已有值的末尾:
APPEND key suffix
APPEND命令在执行追加操作之后,会返回字符串值当前的长度作为命令的返回值。举个例子,对于以下这个名为description的键来说:
redis> GET description "Redis"
我们可以通过执行以下命令,将字符串" is a database"追加到description键已有值的末尾:
redis> APPEND description " is a database"
(integer) 19 -- 追加操作执行完毕之后,值的长度
以下是description键在执行完追加操作之后的值:
redis> GET description "Redis is a database"
在此之后,我们可以继续执行以下APPEND命令,将字符串" with many different data structure."追加到description键已有值的末尾:
redis> APPEND description " with many different data structure." (integer) 55
现在,description键的值又变成了以下形式:
redis> GET description "Redis is a database with many different data structure."
图2-10展示了description键的值是如何随着APPEND命令的执行而变化的。
![](https://epubservercos.yuewen.com/53DDFF/15073668605846106/epubprivate/OEBPS/Images/Figure-0051-0015.jpg?sign=1738881256-0P9QlNIrgXKAvu88kQznIvhQPkp0vx51-0-9457adbe019a51c3a42a05f58c4dd0dd)
图2-10 description键的值随着APPEND命令的执行而变化
2.11.1 处理不存在的键
如果用户给定的键并不存在,那么APPEND命令会先将键的值初始化为空字符串"",然后再执行追加操作,最终效果与使用SET命令为键设置值的情况类似:
redis> GET append_msg -- 键不存在 (nil) redis> APPEND append_msg "hello" -- 效果相当于执行SET append_msg "hello" (integer) 5 redis> GET append_msg "hello"
当键有了值之后,APPEND又会像平时一样,将用户给定的值追加到已有值的末尾:
redis> APPEND append_msg ", how are you? " (integer) 19 redis> GET append_msg "hello, how are you? "
图2-11展示了APPEND命令是如何根据键是否存在来判断应该执行哪种操作的。
![](https://epubservercos.yuewen.com/53DDFF/15073668605846106/epubprivate/OEBPS/Images/Figure-0051-0016.jpg?sign=1738881256-QKiXdQRz1SCJEfYh9r8Gyc29qLZg401y-0-3b2b5ba8c8c28f0c33183fea05473406)
图2-11 APPEND的判断过程
2.11.2 其他信息
复杂度:O(N),其中N为新追加内容的长度。
版本要求:APPEND命令从Redis 2.0.0开始可用。