APPEND

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

如果 `key` 已经存在并且是一个字符串,此命令将 `value` 附加到字符串的末尾。如果 `key` 不存在,则会创建 `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 回复

整数回复:追加操作后字符串的长度。
评价此页面
返回顶部 ↑