Wie mache ich mehrere Schlüssel mit gemeinsamem Präfix im Becher-/Pylonen-Cache ungültig?

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

  •  27-10-2019
  •  | 
  •  

Frage

Angenommen, ich habe das folgende Snippet, das das Laden der Funktion vermutlich mit search_term, limit als Schlüssel, zwischenspeichert. (In Beaker wird es vermutlich in eine String-Darstellung des Tupels aller Argumente konvertiert.)

# 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)

Wenn ich nun etwas in die Datenbank einfüge und alle mit dem neu aktualisierten Suchbegriff verknüpften zwischengespeicherten Daten ungültig machen möchte, wie kann ich dann alle zwischengespeicherten Daten aufzählen, damit ich sie manuell ungültig machen kann?

War es hilfreich?

Lösung

Das Ungültigmachen eines einzelnen Schlüssels ist unkompliziert:

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

Wenn es, wie der Titel Ihrer Frage sagt, eine ganze Reihe von Schlüsseln gibt, die ungültig gemacht werden müssen, würde ich empfehlen, sie in einen separaten Cache zu legen und dann den gesamten Cache zu leeren:

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

Dazu müssen Sie sorgfältig planen, was in welchen Cache kommt

  • Am Ende haben Sie nicht Millionen kleiner Caches
  • Wenn Sie einen Cache löschen, werfen Sie nicht auch einige noch frische Daten weg
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top