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
命令的执行而变化
处理不存在的键
如果用户给定的键并不存在,那么 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
的判断过程
其他信息
属性 | 值 |
---|---|
复杂度 | O(N),其中 N 为新追加内容的长度。 |
版本要求 | APPEND 命令从 Redis 2.0.0 开始可用。 |