Redis sorted setで辞書編集の範囲検索を実行しようとしていますが、この機能の仕組みを理解していて、結果が一致しません。 ZRANGECOUNT
,ZRANGEBYLEX
およびZREMRANGEBYLEX
を使用した場合の結果は同様です。Redis Lexicographical Range Searchの結果が一貫していない
ワーキングクエリ
これは単にZRANGE
を使用して3つの要素を持つ私のセットの一例です。
redis> ZRANGE myset 0 -1
0 00000000022xm26hax001
1 00000000022xm26hax002
2 00000000022xm26hax003
また、すべての要素を辞書編集で取得することもできます。
redis> ZRANGEBYLEX myset - +
0 00000000022xm26hax001
1 00000000022xm26hax002
2 00000000022xm26hax003
期待通りにも働く最後の3つの文字をオフに残すことで範囲検索を行います。
redis> ZRANGEBYLEX myset [00000000022xm26hax [00000000022xm26hax\xff
0 00000000022xm26hax001
1 00000000022xm26hax002
2 00000000022xm26hax003
範囲の引数を調整する最初の2つの要素だけを選択することもできます。
redis> ZRANGEBYLEX myset [00000000022xm26hax001 [00000000022xm26hax002\xff
0 00000000022xm26hax001
1 00000000022xm26hax002
短いスタートが許容可能であると思わ:
redis> ZRANGEBYLEX myset [00000000022x [00000000022xm26hax001\xff
0 00000000022xm26hax001
問題クエリ
私は短いバージョンを使用して選択しようとすると、しかし私は問題に実行文字列 - これらはすべて返されると期待したときにの結果を返します。
しかし、 "m"だけを元に戻すと、3つの要素すべてが再び返されます。
redis> ZRANGEBYLEX myset [00000000022xm [00000000022xm\xff
0 00000000022xm26hax001
1 00000000022xm26hax002
2 00000000022xm26hax003
誰かがこの動作を説明できますか?私の例のデータセットを与えられた"00000000022x"
で始まるすべての要素を返す正しい方法は何ですか?
なぜZRANGEBYLEX myset [00000000022x [00000000022x\xff
は結果を返しませんが、ZRANGEBYLEX myset [00000000022xm [00000000022xm\xff
はすべての結果を返します。「m」を追加するだけで、期待どおりに動作するように見えますか?