問題タブ [cache-invalidation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
database - さまざまなデータベース アクティビティ フィードをサブスクライブし、redis のようなアウト オブ プロセス キャッシュを無効にするオープン ソース コンポーネントはありますか?
データベースをリードスルーキャッシュとして前面に出すために、読み取り負荷の高いデータ用に redis ベースのキャッシュを実装することを検討しています。古い読み取りをできるだけ防ぐために、TTL または LRU ベースのエビクションよりも優れた無効化メカニズムを実装したいと考えています。
いくつかのデータベースは、テーブルなどのデータベース オブジェクトの通知メカニズムを提供します。たとえば、Oracle には変更通知があり、Postgresql にはこの目的のためのNOTIFYがあります。これらの通知をリッスンし、それらを使用して redis や memcached などのプロセス外キャッシュを無効にする既存のオープン ソース プロジェクト/コンポーネントはありますか? インプロセス キャッシュに対してこれを行うプロジェクトをいくつか見てきましたが、アウト プロセス (クラスター化/非クラスター化) キャッシュに対してはこれまでにありませんでした。
node.js - Redis - タグベースの無効化削除ポリシー
タグに基づいてキーを無効化できる Redis キャッシュを実装したいと考えています。
たとえば、投稿リストのクエリをキャッシュするには、キャッシュは次の行のようになります。
で始まるエントリにtags
は、特定のエンティティが存在する一連のキャッシュ キーが含まれているため、特定の投稿のキャッシュを無効にするには、そのタグを取得しdel
、それらすべてに対してクエリを実行します。
私が苦労している部分は、立ち退きポリシーです。通常はallkeys-lru
が優先されますが、クエリがまだキャッシュされている間にタグがランダムに消えないようにする必要があります。これは、redis がを削除tags:post:1
すると、そのキャッシュを無効にすることができないためです。
を見て、データでは 3 時間、タグでは 4 時間にvolatile-ttl
設定したと思いました。そうttl
すれば、Redis はタグをより長く保持することを好むはずですが、そのlru
部分は機能しません。そして、これにはいくつかの隠れた問題があるように感じます。
これについてどうすればよいですか?タグを別のデータベースに保持することを考えましたが、エビクション ポリシーはデータベースごとではなく、インスタンスごとです。
代わりに、タグを別のインスタンスに保存する必要がありますか?