0

データが id の形式である約 160K レコードを検索する必要があり、指定された値が範囲 1 と範囲 2 の範囲内にある行を取得する必要があるため、これまでのところ使用するのはクエリ間です.

昨日memcacheの使用を開始しました。これは、指定された値に対する特定の行がmemcacheにあるかどうかを調べ、そうでない場合は、データベースから取得してmemcacheに入れます。

memcache自体でのルックアップの順序が何であるかはわかりません.o(1)またはo(n)ですか.他のメモリ内オブジェクトの[今は考えられませんが、確かにセッションを使用してテーブルをメモリ内に保持したくありません]、むしろこのメモリ内オブジェクトからデータを取得し、見つからない場合は、データベースに移動します。

PS - 私の db テーブルはほとんど変更されません。

したがって、私が考えている順序は、見つからない場合は memcache を検索し (インメモリを検索 - 配列でバイナリ検索を実行)、見つからない場合は memcache に追加します。db を検索し、インメモリに追加し、memcache に追加します。 .

私は正しい方向に考えていますか

4

1 に答える 1

0

Memcachedは非常に高速で、ルックアップはo(n)ではなくo(1)であるため、memcachedといくつかのバックエンドデータベースを使用するのが最善です。上で提案したシナリオを考えてみましょう。途中でmemcachedよりも遅いセカンダリキャッシュを使用すると、リクエストのレイテンシが増加するだけです。これは、2つではなく3つの場所でデータを要求する必要がある可能性があるためです。また、memcachedはインメモリデータベースソリューションよりも高速になるため、余分なメモリをすべてmemcachedに割り当てる方がよいでしょう。もう1つ考慮すべきことは、アプリケーションに層を追加することによる管理オーバーヘッドです。

于 2013-02-21T19:19:01.337 に答える