私はASP.NETでこの質問をしました...
http://forums.asp.net/t/1584731.aspx
……でも、ここでも聞きたかった。この問題は以前に解決されていると確信しているので、車輪を再発明する理由を考えました…</p>
簡単に言うと、memcached をデータベースのキャッシング レイヤーとして使用して、ソーシャル機能を備えた Web アプリケーションを構築しています。問題を単純化するために、persons テーブルと friendConnection テーブルがある基本的なセットアップを想定してみましょう。ここでは、persons が個人情報を含み、friendConnection には、ある人物が互いに友達になっている場合に別の人物をリンクする 2 つの外部キーがあります (実際にはそうではありません)。テーブルまたは SQL を使用しますが、問題は似ています)
私のキャッシュ有効期限ロジックは単純です。テーブルへの書き込みが発生するたびに、現在キャッシュに存在するそのテーブルに関連するすべての選択ステートメントを期限切れにします。ただし、そのロジックはパフォーマンスに関してはひどいものです。なぜなら、人々が絶えず友達になっていると、キャッシュが数秒以上持続することはないからです。
より複雑なロジックでは、たとえば、現在参照されているフレンドを含むすべての select ステートメントを期限切れにすることができますが、その場合、friendConnection テーブルに関連するすべての select ステートメントを取得し、それらの関連性をチェックする必要があり、これもパフォーマンスの負担になります。
まず、私の質問は理にかなっていますか?
第二に、人々は通常、この問題をどのように解決しますか?