Redis SETRANGE 命令用指定的字符串覆盖给定 key 所储存的字符串值,覆盖的位置从偏移量 offset 开始。
如果 key 原来储存的字符串长度比偏移量小,比如字符串只有 5 个字符长,但你设置的 offset 是 10,那么原字符和偏移量之间的空白字符将用零字节("\x00" )来填充。
最大偏移量是 2^29-1(536870911) ,因为 Redis 字符串的大小被限制在 512 兆以内,如果您需要使用比这更大的空间,可以使用多个 key 来实现 。
注意:当生成一个很长的字符串时,Redis 需要分配内存空间,该操作有时候可能会造成服务器阻塞。
SETRANGE 命令可用版本:>= 2.2.0
Redis SETRANGE 命令的基本语法如下:
SETNX key value
被修改之后的字符串总长度 。
127.0.0.1:6379> SET url "this site" OK 127.0.0.1:6379> 127.0.0.1:6379> 127.0.0.1:6379> SETRANGE url 5 www.cdsy.xyz (integer) 22 127.0.0.1:6379> GET url "this www.cdsy.xyz"
在 2010 年的一台 Macbook Pro 上,设置偏移量为 536870911(512MB 内存分配),耗时约 300 毫秒,设置偏移量为 134217728(128MB 内存分配),耗时约 80 毫秒,设置偏移量 33554432(32MB 内存分配),耗时约 30 毫秒,设置偏移量为 8388608(8MB 内存分配),耗时约 8 毫秒。
注意:若首次内存分配成功之后,再对同一个 key 调用 SETRANGE 命令,无须重新分配内存。