SETRANGE

用另一个字符串值覆盖一个偏移量。如果键不存在,则创建该键。

语法

SETRANGE key offset value

引入版本:2.2.0

复杂度摘要:O(1)

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

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

警告:当设置最后一个可能的字节并且存储在key中的字符串值尚未保存字符串值或保存的字符串值较小时,Redis需要分配所有中间内存,这可能会阻塞服务器一段时间。

请注意,一旦完成第一次分配,后续对同一 key 调用 SETRANGE 将不会产生分配开销。

必需参数

key

键名称。

offset

开始覆盖的从零开始的偏移量。如果偏移量超出当前长度,则字符串将以零填充。

value

要在偏移处写入的字符串。

示例

基本用法:

redis> SET key1 "Hello World"
OK
redis> SETRANGE key1 6 "Redis"
(integer) 11
redis> GET key1
"Hello Redis"

补零示例:

redis> SETRANGE key2 6 "Redis"
(integer) 11
redis> GET key2
"\x00\x00\x00\x00\x00\x00Redis"

详细说明

图案

Thanks to SETRANGE and the analogous GETRANGE commands, you can use Redis strings as a linear array with O(1) random access. This is a very fast and efficient storage in many real world use cases.

Redis Software 与 Redis Cloud 兼容性

Redis
软件
Redis
Cloud
说明
✅ 标准
✅ 主动-主动
✅ 标准
✅ 主动-主动

返回值

RESP2

整数回复:命令修改后的字符串长度。

RESP3

整数回复:命令修改后的字符串长度。

资料来源:Redis 官方 SETRANGE 文档;中文内容参考 Redis 文档许可。