Comment puis-je invalident plusieurs touches avec préfixe commun dans le bécher / cache Pylônes?
Question
Je suppose que l'extrait de code suivant met en cache qui la charge de fonction à l'aide terme_recherche, limite comme la clé, sans doute. (Dans bécher il est converti en représentation de chaîne de tuple de tous les arguments que je suppose)
# 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)
Et si je fais une insertion dans la base de données et que vous souhaitez annuler toutes les données mises en cache associées à la terme_recherche récemment mis à jour, comment puis-je énumérer toutes les données mises en cache afin que je puisse les invalider manuellement?
La solution
invalident une seule clé est directe:
cache.get_cache("mycache").remove_value(key="rabbits")
S'il y a, comme le dit, tas de clés qui doivent être invalidée le titre de votre question, je vous recommande de les mettre dans le cache distinct, puis effacer le cache entier:
cache.get_cache("all_my_rabbit_stuff").clear()
Vous aurez besoin d'une planification minutieuse ce qui se passe dans lequel le cache de sorte que
- vous ne finissent pas avec des millions de petits caches
- en effaçant un cache, vous ne jetez pas des données encore trop frais