Redis秩序集合コマンドZREVRANGEBYLEXの詳細と応用
5289 ワード
Redis秩序集合コマンドZREVRANGEBYLEXの詳細と応用
1概要
ZREVRANGEBYLEXが指定したメンバー区間内のメンバーの順序を返すのは、ディクショナリの逆順序でソートされるスコアが同じでなければならないビジネスシーンがあり、1つの文字列配列を名前のディクショナリの順序で逆順序でソートする必要がある場合、RedisのSortSetというデータ構造を使用して処理できます.
2構文
2.1完全な例
2.2説明
インストラクション
必要かどうか
説明
ZREVRANGEBYLEX
はい
インストラクション
key
はい
順序付きコレクションキー名
max
はい
ディクショナリ内のソート位置が大きいメンバーは、「先頭、または」(「先頭、使用可能」+)で置換する必要があります.
min
はい
ディクショナリ内のソート位置が小さいメンバーは、「[先頭、または](先頭、使用可能)-で置換する必要があります.
LIMIT
いいえ
結果がページングされているかどうかを返します.命令にLIMITが含まれている場合offset、countは入力する必要があります.
offset
いいえ
結果の開始位置を返します
count
いいえ
結果の数を返します
ヒント:の点数は同じでなければなりません!秩序化されたセット内のメンバーのスコアが一致しない場合、返される結果は正しくありません. メンバー文字列をバイナリ配列のバイト数として比較します. のデフォルトは、ASCII文字セットの順序で並べ替えられます.メンバー文字列にutf-8のような文字セットの内容が含まれている場合は、戻り結果に影響しますので、使用しないことをお勧めします. ソースコードにはC言語の デフォルトでは、「max」パラメータと「min」パラメータの前に「[」記号を先頭に付けなければなりません.「[」記号とメンバーの間にスペースはありません.メンバー結果セットに戻るには、パラメータ「max」および「min」 が含まれます.「max」および「min」パラメータの前に「(」記号を先頭として小さく、「(」記号とメンバーの間にスペースを空けることはできません.メンバー結果セットに「max」および「min」メンバーは含まれません. は、スコアの最小値および最大値 を「-」および「+」で表すことができる.「max」と「min」は逆にできません.「max」を後ろに「min」を前にすると、 という結果になります. ZREVRANGEBYLEX取得順序とは逆の命令はZREVRANGEBYLEXである.
3戻り値
メンバー範囲の要素リストを指定します.
4例
スコアが一致しないSortSetセットでZREVRANGEBYLEX命令を使用しないでください.取得された結果は正確ではありません.
4.1すべての値の取得
「-」と「+」を使用して、最小値と最大値を表すことができます.
4.2ページングデータの取得
4.3メンバー間の要素の取得
デフォルトでは、「max」パラメータと「min」パラメータの前に「[」記号を先頭に付ける必要があります.「[」記号とメンバーの間にスペースを置くことはできません.メンバー結果セットにパラメータ「min」と「max」が含まれていることを返します.
「min」と「max」は逆にできません.「min」を前に「max」を後ろに置くと、戻り結果が空になります.
4.4「(」より小さい番号でメンバー間の要素を取得する
「max」パラメータと「min」パラメータの前に「(」記号を先頭に小さく、「(」記号とメンバーの間にスペースを置くことはできません.メンバー結果セットに戻ると「max」および「min」メンバーは含まれません.
4.5 ASCIIコードの影響
メンバー文字列は、バイナリ配列のバイト数として比較されます.デフォルトでは、ASCII文字セットの順序で並べ替えられます.メンバー文字列にutf-8のような文字セットの内容が含まれている場合は、戻り結果に影響しますので、使用しないことをお勧めします.次の例では、大文字の後の順序に注意してください.
5シーンの使用例
5.1電話番号の並べ替え
電話番号をSortSetに保存し、必要に応じて番号セグメントを取得できます.
大きいから小さいまですべての番号を取得します.
セグメント132を取得:
132、133番のセグメントを取得します.
5.2名前のソート
SortSetに名前を保存するには、次の手順に従います.
すべての人の名前の逆配列を取得するには、次の手順に従います.
名前の大文字Aで始まるすべての人を取得します.
名前の大文字CからZまでのすべての人を取得します.
1概要
ZREVRANGEBYLEXが指定したメンバー区間内のメンバーの順序を返すのは、ディクショナリの逆順序でソートされるスコアが同じでなければならないビジネスシーンがあり、1つの文字列配列を名前のディクショナリの順序で逆順序でソートする必要がある場合、RedisのSortSetというデータ構造を使用して処理できます.
2構文
2.1完全な例
ZREVRANGEBYLEX key max min [LIMIT offset count]
2.2説明
インストラクション
必要かどうか
説明
ZREVRANGEBYLEX
はい
インストラクション
key
はい
順序付きコレクションキー名
max
はい
ディクショナリ内のソート位置が大きいメンバーは、「先頭、または」(「先頭、使用可能」+)で置換する必要があります.
min
はい
ディクショナリ内のソート位置が小さいメンバーは、「[先頭、または](先頭、使用可能)-で置換する必要があります.
LIMIT
いいえ
結果がページングされているかどうかを返します.命令にLIMITが含まれている場合offset、countは入力する必要があります.
offset
いいえ
結果の開始位置を返します
count
いいえ
結果の数を返します
ヒント:
memcmp()
関数が用いられ、文字の0番目から最後のビットまでソートされ、前の部分が同じであれば、長い文字列の短い文字列のソートが前になります.3戻り値
メンバー範囲の要素リストを指定します.
4例
スコアが一致しないSortSetセットでZREVRANGEBYLEX命令を使用しないでください.取得された結果は正確ではありません.
4.1すべての値の取得
「-」と「+」を使用して、最小値と最大値を表すことができます.
redis> zadd zset 0 a 0 aa 0 abc 0 apple 0 b 0 c 0 d 0 d1 0 dd 0 dobble 0 z 0 z1
(integer) 12
redis> ZREVRANGEBYLEX zset + -
1) "z1"
2) "z"
3) "dobble"
4) "dd"
5) "d1"
6) "d"
7) "c"
8) "b"
9) "apple"
10) "abc"
11) "aa"
12) "a"
4.2ページングデータの取得
redis> ZREVRANGEBYLEX zset + - LIMIT 0 3
1) "z1"
2) "z"
3) "dobble"
redis> ZREVRANGEBYLEX zset + - LIMIT 3 3
1) "dd"
2) "d1"
3) "d"
4.3メンバー間の要素の取得
デフォルトでは、「max」パラメータと「min」パラメータの前に「[」記号を先頭に付ける必要があります.「[」記号とメンバーの間にスペースを置くことはできません.メンバー結果セットにパラメータ「min」と「max」が含まれていることを返します.
redis> ZREVRANGEBYLEX zset [c [aa
1) "c"
2) "b"
3) "apple"
4) "abc"
5) "aa"
「min」と「max」は逆にできません.「min」を前に「max」を後ろに置くと、戻り結果が空になります.
redis> ZREVRANGEBYLEX zset [aa [c
(empty list or set)
4.4「(」より小さい番号でメンバー間の要素を取得する
「max」パラメータと「min」パラメータの前に「(」記号を先頭に小さく、「(」記号とメンバーの間にスペースを置くことはできません.メンバー結果セットに戻ると「max」および「min」メンバーは含まれません.
redis> ZREVRANGEBYLEX zset (c (aa
1) "b"
2) "apple"
3) "abc"
4.5 ASCIIコードの影響
メンバー文字列は、バイナリ配列のバイト数として比較されます.デフォルトでは、ASCII文字セットの順序で並べ替えられます.メンバー文字列にutf-8のような文字セットの内容が含まれている場合は、戻り結果に影響しますので、使用しないことをお勧めします.次の例では、大文字の後の順序に注意してください.
redis> zadd zset 0 dB
(integer) 1
redis> ZREVRANGEBYLEX zset + -
1) "z1"
2) "z"
3) "dobble"
4) "dd"
5) "dB"
6) "d1"
7) "d"
8) "c"
9) "b"
10) "apple"
11) "abc"
12) "aa"
13) "a"
redis> ZREVRANGEBYLEX zset + - limit 0 3
1) "z1"
2) "z"
3) "dobble"
redis> ZREVRANGEBYLEX zset + - limit 3 3
1) "dd"
2) "dB"
3) "d1"
5シーンの使用例
5.1電話番号の並べ替え
電話番号をSortSetに保存し、必要に応じて番号セグメントを取得できます.
redis> zadd phone 0 13100111100 0 13110114300 0 13132110901
(integer) 3
redis> zadd phone 0 13200111100 0 13210414300 0 13252110901
(integer) 3
redis> zadd phone 0 13300111100 0 13310414300 0 13352110901
(integer) 3
大きいから小さいまですべての番号を取得します.
redis> ZREVRANGEBYLEX phone + -
1) "13352110901"
2) "13310414300"
3) "13300111100"
4) "13252110901"
5) "13210414300"
6) "13200111100"
7) "13132110901"
8) "13110114300"
9) "13100111100"
セグメント132を取得:
redis> ZREVRANGEBYLEX phone (133 [132
1) "13252110901"
2) "13210414300"
3) "13200111100"
132、133番のセグメントを取得します.
redis> ZREVRANGEBYLEX phone (134 [132
1) "13352110901"
2) "13310414300"
3) "13300111100"
4) "13252110901"
5) "13210414300"
6) "13200111100"
5.2名前のソート
SortSetに名前を保存するには、次の手順に従います.
redis> zadd names 0 Toumas 0 Jake 0 Bluetuo 0 Gaodeng 0 Aimini 0 Aidehua
(integer) 6
すべての人の名前の逆配列を取得するには、次の手順に従います.
redis> ZREVRANGEBYLEX names + -
1) "Toumas"
2) "Jake"
3) "Gaodeng"
4) "Bluetuo"
5) "Aimini"
6) "Aidehua"
名前の大文字Aで始まるすべての人を取得します.
redis> ZREVRANGEBYLEX names (B [A
1) "Aimini"
2) "Aidehua"
名前の大文字CからZまでのすべての人を取得します.
redis> ZREVRANGEBYLEX names [Z [C
1) "Toumas"
2) "Jake"
3) "Gaodeng"