Redis SETRANGE命令

 
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.biancheng.net
(integer) 22
127.0.0.1:6379> GET url
"this www.biancheng.net"

知识延展

在 2010 年的一台 Macbook Pro 上,设置偏移量为 536870911(512MB 内存分配),耗时约 300 毫秒,设置偏移量为 134217728(128MB 内存分配),耗时约 80 毫秒,设置偏移量 33554432(32MB 内存分配),耗时约 30 毫秒,设置偏移量为 8388608(8MB 内存分配),耗时约 8 毫秒。

注意:若首次内存分配成功之后,再对同一个 key 调用 SETRANGE 命令,无须重新分配内存。