Come faccio a invalidare diversi tasti con prefisso comune in coppa / piloni cache?

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

  •  27-10-2019
  •  | 
  •  

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?

È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top