Persistencia en Redis

Problema

Al ser Redis un almacén de datos en memoria RAM, y ésta no es persistente, podemos perder datos en el caso de que haya un fallo. Si usamos Redis como cache, no debería ser un problema gigante ya que podemos recalentar la cache de nuevo y listos.

Casi seguro que tenga un impacto en rendimiento, los usuarios se tendrán que volver a loguear pero aparte de esto no habrá mas impacto.

Pero ¿y si queremos usar Redis de almacén persistente? ¿Es posible?

Sistemas de persistencia

Redis tiene varios modelos de persistencia, mediante los cuales guarda todo el contenido que tiene en memoria a disco. En el caso de error o reinicio de Redis, se leerían dichos ficheros para volver a dejar el nodo en el estado correcto. Tiene dos modos de operativa RDB y AOF.

Sigue leyendo Persistencia en Redis

Compresión GZIP y Redis

En mi antiguo trabajo hacíamos muchas peticiones a proveedores externos. De media eran unas 2K peticiones por segundo. Unos 170M peticiones al día. Cada una de éstas peticiones tenía su correspondiente respuesta, que acostumbraba a ser un JSON, pero podía ser un XML. El peso dependía mucho de la respuesta, pero variaba entre pocos KB hasta casi 1MB.

Guardábamos la respuesta en Redis, durante un breve periodo de tiempo (segundos). Al principio, guardábamos los datos «tal cual» y, obviamente, era un error.

GZIP

Comprimir texto es asquerosamente rápido. Hay muchos algoritmos de compresión, pero normalmente conseguiremos un 80% de compresión con respecto al tamaño original, y podemos comprimir entre 15 hasta 60MB/segundo.

En nuestro caso, no sólo era el tamaño en RAM que ocupaba éstos datos en el cluster de Redis, sino la transferencia de datos para guardar las claves en Redis, y leerlas seguidamente. Simplemente guardando información comprimida reducíamos dicho tráfico al 10-20% del original.

Sigue leyendo Compresión GZIP y Redis