»
»
¿Para qué sirve redis?

¿Para qué sirve redis?

para qué sirve redis

Redis es un sistema de cacheado que permite almacenar información para luego volver a usarla a una velocidad increíble, en este post vamos a explicar «para qué sirve redis».

La principal funcionalidad de redis es mejorar la optimización web, ya que trabaja directamente en memoria a diferencia de la carga en Bases de Datos que se almacenan en discos duros.

Mucha gente no entiende la potencia que ofrece redis ni como usarlo. Redis debería estar siempre en nuestra aplicación, si existen llamadas a la Base de Datos recurrentes.

Ejemplos de uso de redis.

Como la teoría sin ejemplos no sirve de nada, os muestro posibles casos de uso, aunque luego os mostraré ejemplos reales de cálculos para que todavía lo entendáis mejor:

Imaginaros una inmobiliaria online que vende o alquila casas, para cada usuario que visita la propiedad tiene que acceder a la base de datos y cargar la información más todos los posibles cálculos relacionados (precio, servicios, habitaciones etc.)
Fijaros cada visita la cantidad de peticiones y procesamiento innecesario que produce de forma innecesaria porque la información de la casa siempre es la misma.

¿Cómo se usaría redis en este caso? Pues una vez tenemos toda la información de la propiedad, se guardaría en redis asignándole una clave, como el id de propiedad. El tiempo de expiración indica cuanto estará la información almacenada en el sistema.

Ejemplo de guardado: propiedad_4056. Con un tiempo de expiración de 1 mes.

Para la siguiente vez que un usuario visite esa casa, habría que buscar en redis si tenemos id 4056 almacenado, en caso afirmativo, se carga y muestra directamente.

Si necesitas ayuda, o tienes dudas sobre aplicaciones informáticas pregúntanos, podemos ayudarte.

Ejemplo práctico de Redis.

Tenemos una tabla de errores de 16000 filas, vamos a hacer una carga de todas desde la Base de Datos, un guardado de todas en redis y una carga de todas en redis, analizando tiempos. El código sería el siguiente (está realizado en php):

	//Carga de la Base de Datos
	$callStartTime = microtime(true);
	$piques=$bd->query("SELECT id,fecha from errores order by id desc");
	$callEndTime = microtime(true);
	$callTime = $callEndTime - $callStartTime;
	$tiempo='Base de Datos. El tiempo transcurrido ces de:  '.sprintf("%.4f",$callTime).' seconds.<br>';
	echo  $tiempo;

        //Guardamos en redis
	$callStartTime = microtime(true);
	$nredis->setTemporalValue("prueba_tiempos", 3600, serialize($piques));
	$callEndTime = microtime(true);
	$callTime = $callEndTime - $callStartTime;
	$tiempo='Redis Guardado. El tiempo transcurrido ces de:  '.sprintf("%.4f",$callTime).' seconds.<br>';
	echo  $tiempo;


        //Cargamos de redis
	$callStartTime = microtime(true);
	$nredis->get("prueba_tiempos");
	$callEndTime = microtime(true);
	$callTime = $callEndTime - $callStartTime;
	$tiempo='Redis Carga. El tiempo transcurrido ces de:  '.sprintf("%.4f",$callTime).' seconds.<br>';
	echo  $tiempo;

Este sería el resultado.

redis tiempos

Estamos hablando que la carga es 26 veces más rápida desde redis que desde la base de datos. Son unas comparativas que os recomiendo que probéis, porque con ellas tendréis claro para qué sirve redis y veréis que es una herramienta muy importante para usar.

Ventajas de redis.

  • Tiempos de lectura y guardado super rápidos.

  • Lo que cargas para un usuario lo usas para todos. El famoso «todos para uno y uno para todos».

  • Tiene multitud de métodos muy cómodos para trabajar con él.

  • El volumen de información que puedes almacenar es bestial, nunca lo llenarás si lo usas bien.

Consejos en el uso de redis.

  • Siempre intenta almacenar en redis una vez que el objeto ya esté totalmente cargado con toda su información, así cuando lo vuelvas a usar la optimización web será mucho más alta.

  • Guarda siempre de forma individual, no guardes por ejemplo todas las casas de la Base de Datos directamente, es mejor almacenarlas una a una en claves separadas, así si tienes que modificar, eliminar o cargar, solo lo haces con la necesaria. Además, en un futuro tu web será mucho más escalable.


  • Intenta usar tiempos de expiración bastante altos. Si la información no va a cambiar un mes es un tiempo increíble sin que se tenga que volver a pedir a la Base de Datos.

  • Serializa (los convierte en cadena de texto) tus objetos siempre antes de guardarlos y deserializalos cuando vayas a cargarlos. En php con el método serialize.

  • Todo lo que puedas almacenar en redis que te evite llamadas o procesamiento úsalo.

  • Desde aquí puedes acceder al proyecto Redis

Sé el primero en comentar

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.


*