消費者がキーワードを入力して製品を検索できる E コマース サイトを構築しているとします。最大で 200,000 個の製品があり、何百万人もの消費者がシステムを使用しているとします。product テーブルがかなり頻繁に更新されるとしましょう。製品の数はそれほど多くないため、製品テーブル全体をメモリに保存して、データベースにアクセスする代わりに検索できる可能性があります。同じデータを格納するが異なるサーバーに存在する分散キャッシュを作成したいと考えています (高可用性とパフォーマンス上の理由から)。これらのキャッシュ間でデータを同期し、製品テーブルが変更されたときにキャッシュを無効にする必要があります。
私たちのアプリケーションは、ASP.NET MVC と NHibernate を使用して構築されています。NHibernate のレベル 2 キャッシングが私の状況に役立つかどうかを理解しようとしています。皆さんがこれに光を当てることができれば、本当に感謝しています。
レベル 2 キャッシュがクエリ結果のキャッシュに役立つことを理解しています。そのため、2 人の異なるユーザーが同じキーワードを使用して検索している場合、L2 キャッシュはデータベースではなくキャッシュから結果を提供します。しかし、製品テーブルが頻繁に更新され、キャッシュされた結果が古くなるため、あまり役に立ちません。私の質問は、L2 キャッシングを正しく理解しているか、キャッシュを希望どおりに管理するのに役立つものが存在するかどうかです (複数のキャッシュ、同じデータ、キャッシュ間の同期とキャッシュの無効化)。どんな考えでも大歓迎です。