Redis APPEND

发表时间:2016-07-23  最后更新时间:2016-07-23   浏览量:1273

APPEND key value;
自2.0.0可用。
时间复杂度:O(1)。因为Redis使用的动态字符串库会在每次再分配的时候消耗双倍空间,假定追加的值非常小,以及已经存在的值是任意大小,摊销时间复杂度是O(1)。

如果key已经存在,并且是一个字符串,这个命令在字符串的结尾追加value。如果key不存在就创建并设置一个空string,所以在这种情况APPEND类似于SET

返回值

Integer reply:追加操作后字符串的长度。

实例

redis>  EXISTS mykey
(integer) 0
redis>  APPEND mykey "Hello"
(integer) 5
redis>  APPEND mykey " World"
(integer) 11
redis>  GET mykey
"Hello World"
redis>  

模式:倍数序列

APPEND命令可用于创建非常紧凑的一系列的固定长度的实例,通常称为倍数序列。每当新实例到达,我们可以使用这个命令存储它。

APPEND timeseries "fixed-size sample"

在倍数序列里访问单个元素非常容易:

  • STRLEN:可用于获取实例的数量。
  • GETRANGE:可用于随机访问元素。如果我们的倍数序列与倍数信息有关联,我们可以轻松的结合Redis2.6里的Lua脚本引擎和GETRANGE,实现二分搜索法,获取局部范围。
  • SETRANGE:可用于重新设置存在的倍数序列。

这个模式的限制是我们被强制使用只追加的操作模式,没有方法以指定的大小轻松的剪切倍数序列,因为Redis当前缺乏能修整字符串对象的命令。然而这种方式的时间效率非常明显。

提示:基于当前的Unix时间,可能切换不同的key,这种方式可能只获得每个key相对小数量的实例,为了避免处理非常大的key,以及使这个模式更友好的分布于多个Redis实例。下面的实例使用固定大小的字符串采集传感器的温度(在真正的实现中使用二进制格式更好)。

redis>  APPEND ts "0043"
(integer) 4
redis>  APPEND ts "0035"
(integer) 8
redis>  GETRANGE ts 0 3
"0043"
redis>  GETRANGE ts 4 7
"0035"
redis>

原创文章,转载请注明出处:转载自Redis中文网 - Redis APPEND



最新文章

Redis最新文章

Redis最热文章