Rubyで値を持つキーをどのように検索しますか? たとえば、値が「somevalue」であるすべてのキーを取得します。
私の鍵は
"xyz" => {:status=> "接続済み", :topic=> "ABC"}
"PQR" => {:status=> "接続済み", :topic=> "ABC"}
ここで、トピックが「ABC」であるすべてのキーを見つける必要があります
Rubyで値を持つキーをどのように検索しますか? たとえば、値が「somevalue」であるすべてのキーを取得します。
私の鍵は
"xyz" => {:status=> "接続済み", :topic=> "ABC"}
"PQR" => {:status=> "接続済み", :topic=> "ABC"}
ここで、トピックが「ABC」であるすべてのキーを見つける必要があります
プログラミング言語に関係なく、これを効率的に行うには、何らかの値をキー名にマップする「インデックス」キーを維持する必要があります。これには Set または Sorted Set を使用するのが通常の方法です。つまり、新しいキー名を追加し、その値に従って削除し、「検索」したいときにそのキーの内容を取得します。
この種の機能をすぐに使用できるライブラリ (gem など) がいくつかあります。あなたのケースで最も優れたOhmを調べてください。
編集
私のキーは xyz => {:status=> "connected", :topic=> "ABC"} PQR => {:status=> "connected", :topic=> "ABC"} です。トピックが「ABC」の KEYS
xyz の値を文字列またはハッシュとして保存します (その一部だけを更新/読み取る必要があるかどうかによって異なります)。次に、そのトピックのすべてのキーの名前を取得するためにorをSADD topic:ABC xyz
実行します。また、トピック:ABC の関連するメンバーにそのキーを覚えさせようとします...SMEMBERS
SSCAN
SREM
DEL
どのバージョンの redis で getkeys を使用できるかによって異なります> = 2.8.13 または、いくつかのパフォーマンスの問題に注意してkeysコマンドを使用できます (キーが少ない場合は問題にならないはずですが、大量のキーがある場合は注意が必要です)すべてのキーを取得するために、keys コマンドが redis をしばらくブロックするため)
redis 2.8 を実行している場合は、キーの代わりにscanコマンドを使用できます。
編集: Redis のドキュメントに最近追加されたページでは、Redis を使用したセカンダリ インデックス作成に関する詳細情報が提供されており、このケースについては非範囲インデックスセクションで説明されています。追加のトピックは次のとおりです。