大きな文字列(ユーザー名、約350Kレコード)があります。私はそれを辞書順にソートして保存する必要があり、メンバーの存在*とメンバーの類似性**を効率的に取り出すことができなければなりません。 Redisソートセットは、ジョブのデータタイプのように見えます。大文字小文字のレキシカルソートセットで並べ替える場合
しかし、私は最初のハードルに落ちているようです。具体的には、私の重要な要件の1つは、同じ文字で始まる限り、異なる文字の場合を一緒に保つことです。例えば。 Bender
とbender
の両方が並んで注文されるはずです。しかしながら、redisのソートされたセットは、辞書編集順序規則に従って厳密であるため、大文字で始まるすべての文字列は、小文字で始まるすべての文字列の前にデフォルトでソートされます(例えば、はa
の前に、ただしA
の後に順序付けされます)。
これを回避する方法はありますか?また、要件を満たすために赤いソートセットを使用しますか?参考までに、私はredisバージョン2.8.4を使用しています。前もって感謝します。
*メンバーの有無:指定されたユーザー名などのほとんどのあるN保存されたユーザ名をプルアップし、指定したユーザ名
:ユーザー名与えられ、それは既に記憶に存在するかどうかを確認するには、**メンバーらしさを設定します
[大文字とアクセントの正規化](https://redis.io/topics/indexes#normalizing-strings-for-case-and-accents) – thepirat000
@ thepirat000:これは素晴らしい投稿です。 Redis 2.8.4では使用できないZRANGEBYLEXを使用するだけです。私は、以前のバージョンの同じものを実装することができます:http://oldblog.antirez.com/post/autocomplete-with-redis.htmlただし、辞書学的に不可知論的ではありません。 –