Pregunta

Supongamos que tengo el siguiente fragmento que almacena en caché la carga de la función usando Search_term, limita como clave, presumiblemente.

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

Ahora, si hago algo de inserción en la base de datos y quiero invalidar todos los datos almacenados en caché asociados con la búsqueda recientemente actualizada, ¿cómo puedo enumerar todos los datos en caché para poder invalidarlos manualmente?

¿Fue útil?

Solución

La invalidación de una sola clave es directa:

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

Si hay, como dice el título de su pregunta, enteros de las claves que deben invalidar, recomendaría ponerlas en caché separado y luego borrar todo el caché:

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

Necesitará una planificación cuidadosa de lo que se debe a la memoria caché para que

  • No terminas con millones de cachés pequeños
  • Al eliminar un caché, no tira algunos datos aún frescos también
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top