SETRANGE

Syntax
SETRANGE key offset value
Available since:
2.2.0
Time complexity:
O(1), not counting the time taken to copy the new string in place. Usually, this string is very small so the amortized complexity is O(1). Otherwise, complexity is O(M) with M being the length of the value argument.
ACL categories:
@write, @string, @slow,

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

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

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

模式

感谢SETRANGE和类似的GETRANGE命令,您可以将Redis字符串用作具有O(1)随机访问的线性数组。在许多实际使用场景中,这是一种非常快速和高效的存储方式。

示例

基本用法:

SET key1 "Hello World" SETRANGE key1 6 "Redis" GET key1

零填充的示例:

SETRANGE key2 6 "Redis" GET key2

RESP2/RESP3 回复

Integer reply: the length of the string after it was modified by the command.
RATE THIS PAGE
Back to top ↑