¿Cuál es el método más rápido para comprimir objetos Python (lista, diccionario, cadena, etc.) antes de guardarlos en la memoria caché y descomprimirlos después de leerlos desde la memoria caché?Comprimir objetos Python antes de guardarlos en la memoria caché
estoy usando Django y espero añadir comprimir/descomprimir el apoyo directamente en el back-end caché de Django, que pone a disposición de todas mis aplicaciones de Django.
Miré en django/core/cache/backend/memcached.py
import cmemcache as memcache
class CacheClass(BaseCache):
def __init__(self, server, params):
BaseCache.__init__(self, params)
self._cache = memcache.Client(server.split(';'))
def get(self, key, default=None):
val = self._cache.get(smart_str(key))
if val is None:
return default
return val
def set(self, key, value, timeout=0):
self._cache.set(smart_str(key), value, self._get_memcache_timeout(timeout))
Parece que la salmuera/unpickle se realiza mediante cmemcache biblioteca. No sé dónde colocar el código de compresión/descompresión.
Mi servidor está vinculado a IO y a la RAM, no a la CPU. La asignación actual de memcached usa 1.3GB de RAM. Por lo tanto, al comprimir los datos en un 50%, se ahorran 650MB de RAM o permiten almacenar dos veces más elementos en la memoria caché. – jack
@jack - ver mi edición - ¡buena suerte! –
gracias, voté su respuesta. Pero espero encontrar una solución más genérica que se modifique en el backend de caché. – jack