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 文档许可。