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,我将无法使其缓存无效。

我看了看,volatile-ttl以为我ttl在数据上设置为 3h,但在标签上设置为 4h,这样 Redis 应该更喜欢将标签保留更长时间,但是这lru部分不起作用。我觉得这有一些隐藏的问题。

我该怎么办?我曾考虑将标签保存在单独的数据库中,但驱逐策略是针对每个实例,而不是针对每个数据库。

我应该将标签存储在单独的实例中吗?

4

0 回答 0