如何在beaker / pylons缓存中使用公共前缀使多个键无效?

时间:2011-01-29 09:10:03

标签: caching pylons beaker

假设我有以下片段使用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相关联的所有缓存数据无效,我如何枚举所有缓存数据,以便我可以手动使它们失效?

1 个答案:

答案 0 :(得分:3)

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

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

如果你的问题的标题是,那么需要失效的一大堆密钥,我建议将它们放在单独的缓存中,然后清除整个缓存:

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

您需要仔细规划哪些缓存中的内容

  • 你最终没有数以百万计的小缓存
  • 在擦除缓存时,你也不会丢弃一些新鲜的数据