Come faccio a invalidare diversi tasti con prefisso comune in coppa / piloni cache?
Domanda
supponiamo di avere il seguente frammento che memorizza il carico funzione utilizzando search_term, limite come chiave, presumibilmente. (In becher è convertito in rappresentazione di stringa di tupla di tutti gli argomenti suppongo)
# 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)
Ora, se faccio un po 'di inserimento nel database e voglio invalidare tutti i dati memorizzati nella cache associati al search_term recentemente aggiornato, come posso enumerare tutti i dati memorizzati nella cache in modo da poter loro invalidare manualmente?
Soluzione
Annullamento di una singola chiave è straight-forward:
cache.get_cache("mycache").remove_value(key="rabbits")
Se c'è, come il titolo del tuo domanda dice: intero mazzo di chiavi che devono essere invalidato, mi consiglia di metterli nella cache separata e poi cancellare l'intera cache:
cache.get_cache("all_my_rabbit_stuff").clear()
Avrete bisogno di una pianificazione attenta ciò che accade in cui la cache in modo che
- non si finisce con milioni di piccole cache
- quando spazzare via una cache, non si butta via alcuni dati ancora fresco troppo