SETRANGE
SETRANGE key offset value
从偏移量 offset 开始, 用 value 参数覆写(overwrite)键 key 储存的字符串值。
不存在的键 key 当作空白字符串处理。 SETRANGE 命令会确保字符串足够长以便将 value 设置到指定的偏移量上, 如果键 key 原来储存的字符串长度比偏移量小(比如字符串只有 5 个字符长,但你设置的 offset 是 10 ), 那么原字符和偏移量之间的空白将用零字节(zerobytes, "\x00" )进行填充。 SETRANGE 命令会返回被修改之后, 字符串值的字节数。
注意: 此命令 不适用于中文的值,因为偏移量是根据 字节来计算的,中文的字节数与英文不同
例子: 对非空字符串执行 SETRANGE 命令:
redis› SET greeting "hello world"OKredis› SETRANGE greeting 6 "Redis" 11redis› GET greeting"hello Redis"
对空字符串/不存在的键执行 SETRANGE 命令:
redis› SETRANGE empty_string 5 "Redis!" # 对不存在的 key 使用 SETRANGE 11redis› GET empty_string # 空白处被"\x00"填充"\x00\x00\x00\x00\x00Redis!"
GETRANGE
GETRANGE key start end
返回键 key 储存的字符串值的指定部分, 字符串的截取范围由 start 和 end 两个偏移量决定 (包括 start 和 end 在内)。
负数偏移量表示从字符串的末尾开始计数, -1 表示最后一个字符, -2 表示倒数第二个字符, 以此类推。
例子:
redis› SET greeting "hello, my friend"OKredis› GETRANGE greeting 0 4 # 返回索引0-4的字符,包括4。"hello"redis› GETRANGE greeting -1 -5 # 不支持回绕操作""redis› GETRANGE greeting -3 -1 # 负数索引"end"redis› GETRANGE greeting 0 -1 # 从第一个到最后一个"hello, my friend"redis› GETRANGE greeting 0 1008611 # 值域范围不超过实际字符串,超过部分自动被符略"hello, my friend"
作业
- 插入键值对 que abcdefg
set que abcdefg
- 将 que的值 efg 换为 zyx
setrange que 5 zyx
- 查询 que 的最后三个字符
getrange que 4 6