SETRANGE 系列

语法
SETRANGE key offset value
从以下位置开始可用:
2.2.0
时间复杂度:
O(1),不计算就地复制新字符串所花费的时间。通常,此字符串非常小,因此摊销复杂度为 O(1)。否则,complexity 为 O(M),其中 M 是 value 参数的长度。
ACL 类别:
@write, @string, @slow,

覆盖存储在 key 处的字符串的一部分,从指定的偏移量开始, 对于的整个长度。 如果偏移量大于 key 处字符串的当前长度,则 string 填充零字节以使偏移量合适。 不存在的键被视为空字符串,因此此命令将使 确保它包含一个足够大的字符串,以便能够在 offset 处设置

请注意,您可以设置的最大偏移量为 2^29 -1 (536870911),因为 Redis 字符串限制为 512 MB。 如果需要增长到超过此大小,可以使用多个键。

警告: 当设置最后一个可能的字节并且存储在 key 中的字符串值尚未保存字符串值,或者保存较小的字符串值时,Redis 需要分配所有中间内存,这可能会阻塞服务器一些 时间。 在 2010 款 MacBook Pro 上,设置字节号 536870911(512MB 分配)需要 ~300 毫秒,设置字节号134217728(128MB 分配)需要 ~80 毫秒,设置 位号 33554432(32MB 分配)需要 ~30 毫秒,设置位号 8388608 (8MB 分配)需要 ~8 毫秒。 请注意,完成第一次分配后,对SETRANGE为 同一不会有分配开销。

模式

由于SETRANGE和类似的GETRANGE命令中,您可以使用 Redis strings 作为具有 O(1) 随机访问的线性数组。 在许多实际使用案例中,这是一种非常快速和高效的存储。

例子

基本用法:

SET 键 1 “Hello World” SETRANGE 键1 6 “Redis” GET 密钥 1

零填充示例:

SETRANGE key2 6 “Redis” GET 密钥 2

RESP2/RESP3 回复

Integer reply:字符串被命令修改后的长度。
为本页评分
返回顶部 ↑