*Redis APPEND 命令 将值追加到指定 key 的末尾

*APPEND

*语法

APPEND key value

*说明

APPEND 命令用于为指定的 key 追加值。

如果 key 已经存在并且是一个字符串,APPEND 命令将 value 追加到 key 原来的值的末尾。

如果 key 不存在,APPEND 就简单地将给定 key 设为 value,就像执行 SET key value 一样。

该命令在处理日志追加、消息聚合、时间序列数据等场景中非常有用。

*示例

# 确保 myphone 不存在
redis-cli EXISTS myphone

# 对不存在的 key 执行 APPEND,等同于 SET myphone "nokia"
redis-cli APPEND myphone "nokia"

# 对已存在的字符串追加内容
redis-cli APPEND myphone " - 1110"

# 查看结果
redis-cli GET myphone

# 追加多个片段构建完整消息
redis-cli APPEND mykey "Hello"
redis-cli APPEND mykey " World"
redis-cli GET mykey

*返回值

  • Integer reply:追加指定值之后,key 中字符串的长度。

*版本兼容性

版本 说明
>= 2.0.0 可用
< 2.0.0 不支持

*时间复杂度

O(1),均摊复杂度。如果追加操作导致原字符串需要重新分配内存,则为 O(N),其中 N 为原字符串长度。

*模式:时间序列(Time series)

APPEND 可以用来为一系列定长(fixed-size)数据提供一种紧凑的表示方式,通常称之为时间序列。每当一个新数据到达的时候,执行以下命令:

redis-cli APPEND timeseries "fixed-size sample"

然后可以通过以下的方式访问时间序列的各项属性:

  • STRLEN 给出时间序列中数据的数量。
  • GETRANGE 可以用于随机访问。
  • SETRANGE 用于覆盖或修改已存在的时间序列。

这个模式的唯一缺陷是我们只能增长时间序列,而不能对时间序列进行缩短,因为 Redis 目前还没有对字符串进行修剪(trim)的命令。但不管怎么说,这个模式的储存方式还是可以节省大量的空间。