Ir al contenido
  1. Posts/

DiskCache: Caché en Disco para Python sin Redis ni Memcached

··223 palabras·2 mins·

💾 ¿Necesitás caché persistente en Python sin montar Redis ni Memcached? DiskCache lo hace en una línea.

diskcache es una librería Python de código abierto (Apache 2) que usa SQLite + archivos mapeados en memoria para ofrecer caché en disco más rápida que soluciones en memoria clásicas.

⚡ ¿Más rápido que Memcached?

# Memcached
%timeit client[b'key']
# → 25.4 µs por loop

# DiskCache  
%timeit cache[b'key']
# → 11.8 µs por loop

Sí, DiskCache es más rápido que Memcached en lectura local.

🔧 Uso básico:

import diskcache as dc

cache = dc.Cache('tmp')
cache['key'] = 'value'
print(cache['key'])  # 'value'

# Con memoización anti-stampede
from diskcache import memoize_stampede

@memoize_stampede(cache, expire=60)
def costosa(param):
    return calcular_algo(param)

✨ Características:

  • Thread-safe y process-safe (ideal para multiprocessing)
  • Políticas de evicción: LRU, LFU y más
  • Compatible con Django como backend de caché
  • Deque y Dict persistentes entre procesos
  • Lock y throttle cross-process

💡 Explicación en pocas palabras
#

DiskCache almacena los valores en SQLite (para las claves pequeñas) o en archivos del sistema de archivos (para valores grandes). Como usa memoria mapeada, las lecturas no requieren copiar datos entre procesos. Esto lo hace sorprendentemente rápido para un caché en disco, y completamente persistente entre reinicios sin necesidad de un servidor separado.

Más información en el link 👇

También publicado en LinkedIn.
Juan Pedro Bretti Mandarano
Autor
Juan Pedro Bretti Mandarano