上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命令的执行而变化的。
图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命令是如何根据键是否存在来判断应该执行哪种操作的。
图2-11 APPEND的判断过程
2.11.2 其他信息
复杂度:O(N),其中N为新追加内容的长度。
版本要求:APPEND命令从Redis 2.0.0开始可用。