0

假设我有以下片段,它使用 search_term 缓存函数加载,限制作为键,大概。(在烧杯中,它被转换为我想的所有参数的元组的字符串表示)

# Assuming a cache object is available like:
cache = CacheManager(dict_of_config_options)


def populate_things():

    @cache.cache('mycache', expire=15)
    def load(search_term, limit, offset):
        return load_the_data(search_term, limit, offset)

    return load('rabbits', 20, 0)

现在,如果我在数据库中进行了一些插入操作,并且想要使与新更新的 search_term 关联的所有缓存数据失效,我该如何枚举所有缓存数据以便手动使它们失效?

4

1 回答 1

3

使单个密钥无效是直截了当的:

cache.get_cache("mycache").remove_value(key="rabbits")

如果有,正如你的问题的标题所说,一大堆需要失效的键,我建议将它们放在单独的缓存中,然后清除整个缓存:

cache.get_cache("all_my_rabbit_stuff").clear()

您需要仔细规划哪些内容进入哪个缓存,以便

  • 你不会得到数百万个小缓存
  • 清除缓存时,您也不会丢弃一些仍然新鲜的数据
于 2011-02-02T08:08:32.093 回答