天天看點

ZRANGEBYLEX key min max [LIMIT offset count]

ZRANGEBYLEX 傳回指定成員區間内的成員,按成員字典正序排序, 分數必須相同。 在某些業務場景中,需要對一個字元串數組按名稱的字典順序進行排序時,可以使用Redis中SortSet這種資料結構來處理。

指令

是否必須

說明

ZRANGEBYLEX

key

有序集合鍵名稱

min

字典中排序位置較小的成員,必須以"["開頭,或者以"("開頭,可使用"-"代替

max

字典中排序位置較大的成員,必須以"["開頭,或者以"("開頭,可使用"+"代替

LIMIT

傳回結果是否分頁,指令中包含LIMIT後offset、count必須輸入

offset

傳回結果起始位置

count

傳回結果數量

提示:

分數必須相同! 如果有序集合中的成員分數有不一緻的,傳回的結果就不準。

成員字元串作為二進制數組的位元組數進行比較。

預設是以ASCII字元集的順序進行排列。如果成員字元串包含utf-8這類字元集的内容,就會影響傳回結果,是以建議不要使用。

預設情況下, “max” 和 “min” 參數前必須加 “[” 符号作為開頭。”[” 符号與成員之間不能有空格, 傳回成員結果集會包含參數 “min” 和 “max” 。

“max” 和 “min” 參數前可以加 “(“ 符号作為開頭表示小于, “(“ 符号與成員之間不能有空格。傳回成員結果集不會包含 “max” 和 “min” 成員。

可以使用 “-“ 和 “+” 表示得分最小值和最大值

“min” 和 “max” 不能反, “max” 放前面 “min”放後面會導緻傳回結果為空

與ZRANGEBYLEX擷取順序相反的指令是ZREVRANGEBYLEX。

源碼中采用C語言中<code> memcmp() </code>函數, 從字元的第0位到最後一位進行排序,如果前面部分相同,那麼較長的字元串比較短的字元串排序靠後。

指定成員範圍的元素清單。

不要在分數不一緻的SortSet集合中去使用 ZRANGEBYLEX 指令,因為擷取的結果并不準确。

預設情況下, “max” 和 “min” 參數前必須加 “[” 符号作為開頭。

“[” 符号與成員之間不能有空格, 傳回成員結果集會包含參數 “min” 和 “max” 。

“max” 和 “min” 參數前可以加 “(“ 符号作為開頭表示小于, “(“ 符号與成員之間不能有空格。

傳回成員結果集不會包含 “max” 和 “min” 成員。

預設是以ASCII字元集的順序進行排列。

如果成員字元串包含utf-8這類字元集的内容,就會影響傳回結果,是以建議不要使用。

我們可以将電話号碼存儲到SortSet中,然後根據需要來擷取号段:

擷取所有号碼:

擷取132号段:

擷取132、133号段:

将名稱存儲到SortSet中:

擷取所有人的名字:

擷取名字中大寫字母A開頭的所有人:

擷取名字中大寫字母C到Z的所有人:

<code></code>

本文作者:陳群

本文來自雲栖社群合作夥伴rediscn,了解相關資訊可以關注redis.cn網站。

繼續閱讀