# SETRANGE
从指定的偏移量开始,在key处覆盖字符串的一部分
语法
SETRANGE key offset value
可用版本:
2.2.0
时间复杂度:
O(1),不计算复制新字符串所需的时间。通常,该字符串非常小,因此摊销复杂度为 O(1)。否则,复杂度为 O(M),其中 M 是 value 参数的长度。
ACL 类别:
@write
,@string
,@slow
覆盖存储在key的部分字符串,从指定的偏移量开始,覆盖**value的整个长度。如果偏移量大于key处字符串的当前长度,则用零字节填充字符串以使偏移量适合。不存在的键被视为空字符串,因此此命令将确保它包含一个足够大的字符串,以便能够在offset处设置**值。
请注意,您可以设置的最大偏移量为 2^29 -1 (536870911),因为 Redis 字符串限制为 512 兆字节。如果您需要超过这个大小,您可以使用多个键。
警告:当设置最后一个可能的字节并且存储在 key的字符串值还没有保存字符串值,或者保存一个小的字符串值时,Redis 需要分配所有可能阻塞服务器一段时间的中间内存。在 2010 MacBook Pro 上,设置字节数 536870911(分配 512MB)大约需要 300 毫秒,设置字节数 134217728(分配 128MB)大约需要 80 毫秒,设置位数 33554432(分配 32MB)大约需要 30 毫秒,设置位数 8388608(分配 8MB)大约需要 8 毫秒。请注意,一旦完成第一次分配,SETRANGE
对同一键的后续调用将不会产生分配开销。
# 模式
由于SETRANGE
和类似的 GETRANGE
命令,您可以将 Redis 字符串用作具有 O(1) 随机访问的线性数组。在许多现实世界的用例中,这是一种非常快速和高效的存储。
# 返回
整数:被命令修改后的字符串长度。
# 例子
基本用法:
redis> SET key1 "Hello World"
"OK"
redis> SETRANGE key1 6 "Redis"
(integer) 11
redis> GET key1
"Hello Redis"
redis>
零填充示例:
redis> SETRANGE key2 6 "Redis"
(integer) 11
redis> GET key2
"Redis"
redis>
# 反馈
如果您在此页面上发现问题,或有改进建议,请提交请求以合并或打开存储库中的问题。