2017-01-14 5 views
0

私はちょうどRedisについて学び始めました。私は自分のラップトップにインストールし、シンプルなJavaクライアントを書いた。私は、Webベースのアプリケーションから来るクエリを処理するElasticsearchインスタンスを持っています。それはかなり速いですが、クライアントのレスポンス時間を短縮するために、弾性サーチインスタンスをRedisで「前に」置くことができる実際的なケースがあるかどうかは疑問です。私の非常に限られたレディス知識では、私はレディスのESクエリーからの回答を実用的に保存するのか、それともどんな価値を提供するのか疑問に思っています。より一般的には、誰かがESとRedisをどのように一緒に使用するかの例を私に教えてください。ありがとうESのためのJedis「フロントエンド」

答えて

1

画像にRedisを持つユースケースは、Logstash経由でElasticsearchに文書を読み込むときにtemporary bufferとして使用することです。

Redisは基本的にキャッシュであるため、主に目的のバックエンドサービスが十分に高速でないため、速やかにデータを利用できるようにすることが主な目的です。あなたのElasticsearchインスタンスが "かなり速い"(それが意味するところは何でも)と言っているので、なぜレスポンスをキャッシュしたいのですか?

また、キャッシュを画像に挿入するときには、新たな懸念があります。最も重要なのは、キャッシュをいつ期限切れにするのですか。したがって、Elasticsearchのデータがかなり安定している場合は、キャッシュのメリットがあります。しかし、Elasticsearchのデータが頻繁に変更されている場合、レディスキャッシュには多くの古くなったデータの問題に直面することがあります。これは不要な問題です。

私の意見では、ESのクエリやマッピングを改善して、速いデータを提供するのは、時間の1%にすぎないキャッシュをチューニングするよりもはるかに良いことです。

+0

ありがとう、これは理にかなっています。私の考えは、検索文字列をキーとして格納し、値としてレスポンスを格納する単純なキャッシュ実装でした。したがって、フロントエンドから誰かが検索を実行した場合、最初に同じクエリが実行されたかどうかを調べるためにredisをヒットし、そうであれば前の結果を返します。私はちょうどどれほど実用的であるか分からなかった。 – user1154644

+0

はい、データが変更された場合、以前の検索に対する応答が変更された可能性があり、キャッシュされたものが正確ではない可能性があります。これは、キャッシュに関する全面的な問題です。つまり、キャッシュされたデータが失効していないかどうかを知り、それをきれいに拭き取ることができます。 – Val

関連する問題