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網站。