0

おそらく、search_term をキーとして limit を使用して関数の読み込みをキャッシュする次のスニペットがあるとします (ビーカーでは、すべての引数のタプルの文字列表現に変換されます)。

# 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

1 つのキーの無効化は簡単です。

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

質問のタイトルが示すように、無効にする必要があるキーがたくさんある場合は、それらを別のキャッシュに入れてからキャッシュ全体をクリアすることをお勧めします。

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

どのキャッシュに何が入るかを慎重に計画する必要があります。

  • 何百万もの小さなキャッシュで終わることはありません
  • キャッシュを一掃するとき、まだ新しいデータも捨てない
于 2011-02-02T08:08:32.093 に答える