SETRANGE
SETRANGE key offset value
從偏移量 offset 開始, 用 value 參數(shù)覆寫(overwrite)鍵 key 儲存的字符串值。
不存在的鍵 key 當作空白字符串處理。 SETRANGE 命令會確保字符串足夠長以便將 value 設置到指定的偏移量上, 如果鍵 key 原來儲存的字符串長度比偏移量小(比如字符串只有 5 個字符長,但你設置的 offset 是 10 ), 那么原字符和偏移量之間的空白將用零字節(jié)(zerobytes, "\x00" )進行填充。 SETRANGE 命令會返回被修改之后, 字符串值的字節(jié)數(shù)。
注意: 此命令 不適用于中文的值,因為偏移量是根據(jù) 字節(jié)來計算的,中文的字節(jié)數(shù)與英文不同
例子: 對非空字符串執(zhí)行 SETRANGE 命令:
redis? SET greeting "hello world"OKredis? SETRANGE greeting 6 "Redis" 11redis? GET greeting"hello Redis"
對空字符串/不存在的鍵執(zhí)行 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 在內(nèi))。
負數(shù)偏移量表示從字符串的末尾開始計數(shù), -1 表示最后一個字符, -2 表示倒數(shù)第二個字符, 以此類推。
例子:
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 # 負數(shù)索引"end"redis? GETRANGE greeting 0 -1 # 從第一個到最后一個"hello, my friend"redis? GETRANGE greeting 0 1008611 # 值域范圍不超過實際字符串,超過部分自動被符略"hello, my friend"
作業(yè)
- 插入鍵值對 que abcdefg
set que abcdefg
- 將 que的值 efg 換為 zyx
setrange que 5 zyx
- 查詢 que 的最后三個字符
getrange que 4 6