扫码一下
查看教程更方便
SETRANGE 命令从偏移量 offset 开始, 用 value 参数覆盖键 key 储存的字符串值。
不存在的键 key 当作空白字符串处理。
SETRANGE 命令会确保字符串足够长以便将 value 设置到指定的偏移量上, 如果键 key 原来储存的字符串长度比偏移量小(比如字符串只有 5 个字符长,但你设置的 offset 是 10 ), 那么原字符和偏移量之间的空白将用零字节(zerobytes, "\x00" )进行填充。
因为 Redis 字符串的大小被限制在 512 兆(megabytes)以内, 所以用户能够使用的最大偏移量为 2^(29-1) (536870911) , 如果你需要使用比这更大的空间, 请使用多个 key 。
注意: 当生成一个很长的字符串时, Redis 需要分配内存空间, 该操作有时候可能会造成服务器阻塞(block)。 在2010年出产的Macbook Pro上, 设置偏移量为 536870911(512MB 内存分配)将耗费约 300 毫秒, 设置偏移量为 134217728(128MB 内存分配)将耗费约 80 毫秒, 设置偏移量 33554432(32MB 内存分配)将耗费约 30 毫秒, 设置偏移量为 8388608(8MB 内存分配)将耗费约 8 毫秒。
redis Setrange 命令基本语法如下:
redis 127.0.0.1:6379> SETRANGE KEY_NAME OFFSET VALUE
>= 2.2.0
被修改后的字符串长度。
redis 127.0.0.1:6379> SET key1 "Hello World"
OK
redis 127.0.0.1:6379> SETRANGE key1 6 "Redis"
(integer) 11
redis 127.0.0.1:6379> GET key1
"Hello Redis"
SETRANGE 命令的时间复杂度:O(1) 不计算将新字符串复制到相应位置所需的时间。通常情况下,字符串长度非常小,因此复杂度为O(1)。 否则,复杂度为O(M),其中M
为字符串的长度。