APPEND:追加新内容到值的末尾

通过调用 APPEND 命令,用户可以将给定的内容追加到字符串键已有值的末尾:

  1. APPEND key suffix

APPEND 命令在执行追加操作之后,会返回字符串值当前的长度作为返回值。

举个例子,对于以下这个名为 description 的键来说:

  1. redis> GET description
  2. "Redis"

我们可以通过执行以下命令,将字符串 " is a database" 追加到 description 键已有值的末尾:

  1. redis> APPEND description " is a database"
  2. (integer) 19 -- 追加操作执行完毕之后,值的长度

以下是 description 键在执行完追加操作之后的值:

  1. redis> GET description
  2. "Redis is a database"

在此之后,我们可以继续执行以下 APPEND 命令,将字符串 " with many different data structure." 追加到 description 键已有值的末尾:

  1. redis> APPEND description " with many different data structure."
  2. (integer) 55

现在,description 键的值又变成了以下这个样子:

  1. redis> GET description
  2. "Redis is a database with many different data structure."

图 2-10 展示了 description 键的值是如何随着 APPEND 命令的执行而变化的。


图 2-10 description 键的值随着 APPEND 命令的执行而变化_images/IMAGE_APPEND.png

处理不存在的键

如果用户给定的键并不存在,那么 APPEND 命令会先将键的值初始化为空字符串 "" ,然后再执行追加操作,最终效果跟使用 SET 命令为键设置值的情况类似:

  1. redis> GET append_msg -- 键不存在
  2. (nil)
  3.  
  4. redis> APPEND append_msg "hello" -- 效果相当于执行 SET append_msg "hello"
  5. (integer) 5
  6.  
  7. redis> GET append_msg
  8. "hello"

当键有了值之后,APPEND 又会像平时一样,将用户给定的值追加到已有值的末尾:

  1. redis> APPEND append_msg ", how are you?"
  2. (integer) 19
  3.  
  4. redis> GET append_msg
  5. "hello, how are you?"

图 2-11 展示了 APPEND 命令是如何根据键是否存在来判断应该执行哪种操作的。


图 2-11 APPEND 的判断过程_images/IMAGE_TWO_CASE_APPEND.png


其他信息

属性
复杂度O(N),其中 N 为新追加内容的长度。
版本要求APPEND 命令从 Redis 2.0.0 开始可用。