0

タグに基づいてキーを無効化できる Redis キャッシュを実装したいと考えています。

たとえば、投稿リストのクエリをキャッシュするには、キャッシュは次の行のようになります。

{
    "posts:name=lorem": [
        { id: 1, name: "Lorem ipsum dolor.." },
        { id: 2, name: "Lorem ipsum dolor.." },
    ],
    "tags:post:1": ["posts:name=lorem"],
    "tags:post:2": ["posts:name=lorem"]
}

で始まるエントリにtagsは、特定のエンティティが存在する一連のキャッシュ キーが含まれているため、特定の投稿のキャッシュを無効にするには、そのタグを取得しdel、それらすべてに対してクエリを実行します。

私が苦労している部分は、立ち退きポリシーです。通常はallkeys-lruが優先されますが、クエリがまだキャッシュされている間にタグがランダムに消えないようにする必要があります。これは、redis がを削除tags:post:1すると、そのキャッシュを無効にすることができないためです。

を見て、データでは 3 時間、タグでは 4 時間にvolatile-ttl設定したと思いました。そうttlすれば、Redis はタグをより長く保持することを好むはずですが、そのlru部分は機能しません。そして、これにはいくつかの隠れた問題があるように感じます。

これについてどうすればよいですか?タグを別のデータベースに保持することを考えましたが、エビクション ポリシーはデータベースごとではなく、インスタンスごとです。

代わりに、タグを別のインスタンスに保存する必要がありますか?

4

0 に答える 0