MySQLデータベースに実際に格納されている3,500万のレコード(読み込み専用)があります。これはパフォーマンス上の理由からRedisに引き渡したいと思っています。実は、私はRedisのには、このようなものを保存するために管理している:いくつかのRubyの接着剤で、私はこの既存のアプリで可能な限り少ないものとして破ることができるようにRedisフルテキスト検索:逆索引や太陽黒点?
1 {"type":"Country","slug":"albania","name_fr":"Albanie","name_en":"Albania"}
2 {"type":"Country","slug":"armenia","name_fr":"Arménie","name_en":"Armenia"}
...
私がここで使うキーは、従来のMySQLのIDです(そして、これはここで深刻な問題です)。
ここで問題は、値の部分の中のキーワード「アルメニア」で検索する必要がある場合です。
- ID => JSON値:私はRedisのインデックスをmultiplicate
次のいずれかのうちの2つしか方法がありますように思えますこの記事に示すように、それは、オートコンプリートのために特別に、最終的には)別の巨大なインデックスを
- を基本的な検索トリックを行うことができます:http://oldblog.antirez.com/post/autocomplete-with-redis.html
はどちらか私はあなたが何をするだろう、または一部の全文検索エンジン(残念ながら、私は実際にはあまり
ので:-(のMySQLに接続されていたThinkingSphinxを使用黒点でしょうか?あなたは、単一のテーブルのRedis移動へのMySQLは良いアイデアだと思いますか?私は16GBのRAM Serverにかかる巨大なRedisキー/値がメモリのフットプリントを恐れています。
同様のRedisの使用についてのご意見はありますか?
はいエリ、ついにあなたは完全に正しいと思われます。私は最後まで実験を行い、Redis vs ThinkingSphinx indexingを使用した逆インデックスベースの検索をベンチマークしました。ThinkingSphinxが戦闘で勝った(約30%速くなりました)。だからあなたは正しいと思いますが、私はRedisがちょうどいいツールだと思っています。スフィンクスを使って引き続き狂った速さを実現していきます(そして、私のレガシーMySQL DBは読みづらいデータでいっぱいです...) – gbarillot
Byちょうど、私はあなたにこれでグーグルで、3百万のレコードセットは650MoのRAMに収まっているので、私が最初に期待していたそれほど重要ではない問題でした – gbarillot