追加

语法
APPEND key value
可用时间
2.0.0
时间复杂度
O(1)。假设附加的值很小,而已存在的值的任何大小,则摊销时间复杂度为 O(1),因为 Redis 使用的动态字符串库将在每次重新分配时将可用空闲空间加倍。
ACL 类别
@write, @string, @fast,

如果key已经存在并且是字符串,则此命令将value附加到字符串末尾。如果key不存在,则会创建它并将其设置为一个空字符串,因此在这种特殊情况下,APPEND将类似于SET

示例

EXISTS mykey APPEND mykey "Hello" APPEND mykey " World" GET mykey

模式:时间序列

APPEND命令可用于创建固定大小样本列表的非常紧凑的表示形式,通常称为时间序列。每次有新样本到达时,我们都可以使用以下命令存储它

APPEND timeseries "fixed-size sample"

访问时间序列中的单个元素并不难

  • STRLEN可用于获取样本数量。
  • GETRANGE允许随机访问元素。如果我们的时间序列具有关联的时间信息,我们可以轻松地实现二进制搜索以获取范围,将GETRANGE与 Redis 2.6 中可用的 Lua 脚本引擎结合使用。
  • SETRANGE可用于覆盖现有时间序列。

此模式的限制是我们被迫使用仅附加操作模式,没有简单的方法可以将时间序列缩减到给定的大小,因为 Redis 目前缺少能够修剪字符串对象的命令。但是,以这种方式存储的时间序列的空间效率非常显著。

提示:可以根据当前的 Unix 时间切换到另一个键,这样可以为每个键保留相对较小的样本数量,以避免处理非常大的键,并使此模式更容易分布在多个 Redis 实例上。

一个使用固定大小字符串对传感器温度进行采样的示例(在实际实现中使用二进制格式更好)。

APPEND ts "0043" APPEND ts "0035" GETRANGE ts 0 3 GETRANGE ts 4 7

RESP2/RESP3 响应

整数响应:附加操作后的字符串长度。
RATE THIS PAGE
Back to top ↑