Redis使用手册
上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开始可用。