Comment puis-je invalident plusieurs touches avec préfixe commun dans le bécher / cache Pylônes?

StackOverflow https://stackoverflow.com/questions/4836034

  •  27-10-2019
  •  | 
  •  

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?

Était-ce utile?

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top