Para el almacenamiento en caché escalable al trabajar con sistemas IT distribuidos, es aconsejable utilizar cachés distribuidos (Redis Cluster, Memcached Cluster). Soportan sharding, replicación y pueden equilibrar dinámicamente la carga entre los nodos.
La capa de caché se implementa sobre una API de cliente neutral. Cuando la carga en el clúster cambia, se añaden o eliminan nodos automáticamente (escalado automático).
Ejemplo: un Redis Cluster que se adapta dinámicamente usando un cliente que descubre automáticamente nuevos nodos.
import rediscluster rc = rediscluster.RedisCluster(startup_nodes=[{"host": "127.0.0.1", "port": "7000"}]) rc.set('key', 'value')
Características clave:
¿Proporciona Memcached en modo clúster resistencia a fallos de nodos manteniendo los datos?
No. Memcached no mantiene datos en caso de reiniciar o fallar un nodo. Para persistencia, es mejor usar Redis.
¿Se pueden almacenar en caché datos que cambian muy frecuentemente (por ejemplo, con un tiempo de vida real < 1 segundo)?
No es eficiente; gestionar versiones antiguas será más complicado, a menudo es mejor no almacenar esos objetos en caché en absoluto.
¿Afectará una caché no válida (caché obsoleta) a la integridad de los datos?
Puede afectar. Se debe implementar un mecanismo de invalidación forzada (por ejemplo, a través de pub/sub o un mecanismo de eventos) para reducir el riesgo de desincronización.