Skip to content

Una introducción ilustrada a Redis ☁️

Esta es una traducción que desde EGA Futura ofrecemos como cortesía a toda la Ohana y comunidad de programadores , consultores , administradores y arquitectos de Salesforce para toda Iberoamérica .

El enlace a la publicación original, lo encontrarás al final de este artículo.

Una introducción ilustrada a Redis | Blog de desarrolladores de Salesforce

Bienvenido a la primera entrega de una miniserie ilustrada sobre el diseño de sistemas de bases de datos. En esta publicación, echamos un vistazo a Redis: qué es, cuándo resulta útil y cómo usar los comandos básicos de Redis. Los comandos son independientes del entorno, por lo que en nuestro ejemplo, los ejecutaremos a través de una CLI de Redis proporcionada por Heroku Data para Redis , un complemento preconfigurado que permite a los desarrolladores instalar rápidamente una instancia de Redis y concentrarse en trabajar con datos. de forma segura y eficaz.

¿Qué es Redis?

Redis es, como dice la documentación oficial , "un almacén de estructura de datos en memoria de código abierto (con licencia BSD) que se utiliza como base de datos, caché, intermediario de mensajes y motor de transmisión". ¡Eso es todo un bocado! Exploremos más a fondo lo que esto significa discutiendo cuándo Redis podría ser útil, por qué puede ser una herramienta eficaz y cómo funciona detrás de escena.

¿Cuándo usarías Redis?

Imagine por un momento que es un ingeniero que trabaja en una aplicación hipotética llamada Novel, un sitio de redes sociales para escritores. Ya sabe cómo esconder contenido que es estático y que es poco probable que cambie con frecuencia, como los estilos CSS y la imagen de perfil del usuario, en la memoria caché de su navegador .


¿Qué pasa con las cosas que son un poco más dinámicas, como las publicaciones más populares del día? Es probable que la lista de publicaciones principales cambie con relativa frecuencia, tal vez una vez por hora, pero no tan a menudo como para que no valga la pena almacenarla… en alguna parte. ¿Pero donde?

¿Por qué Redis es rápido?

Podríamos almacenar las noticias principales en una base de datos relacional estructurada de forma tradicional. Las tablas de bases de datos son útiles para almacenar y clasificar de manera confiable grandes cantidades de grandes cantidades de datos. Pero también puede llevar tiempo localizar y recuperar datos de los discos duros que los almacenan a largo plazo. La memoria RAM, por otro lado, es mucho más rápida . Está diseñado para almacenar y recuperar datos temporales a una velocidad consistentemente rápida, sin importar en qué parte de la "memoria" se encuentre físicamente.


La RAM también es donde Redis almacena datos. En otras palabras, los datos se almacenan "en la memoria". Esto es lo que convierte a Redis en un lugar óptimo para almacenar en caché datos temporales y dinámicos que múltiples usuarios obtendrán y actualizarán, y su diseño no relacional es adecuado para muchos casos de uso en los que se prioriza la velocidad de acceso más que los enlaces entre tablas.

¿Como funciona?

Redis almacena datos en una estructura similar a un objeto JSON, en una masa gigante de pares clave-valor. Este paradigma se refleja en su nombre, que en realidad es una abreviatura de Remote Dictionary Server .


Podemos establecer la cantidad de tiempo que un par clave-valor específico debe permanecer en la memoria (¿tres días? ¿para siempre?) a través de su propiedad de tiempo de vida, y saber que los datos que hemos almacenado se actualizarán en un orden relativamente consistente usando una estrategia de desalojo por uso menos reciente (LRU) . Esto significa que cuando la tienda de Redis esté llena, los nuevos datos reemplazarán el fragmento que ha pasado más tiempo sin acceder.


También podemos estar seguros de que todas las actualizaciones de Redis son atómicas , lo que significa que un conjunto de actualizaciones dentro de una transacción tendrá éxito o fallará por completo, en lugar de quedarse atascado en un estado parcialmente actualizado.


Y si algo sale mal, podemos reemplazar nuestra tienda principal de Redis con nuestra copia de seguridad, gracias a las funciones de replicación asíncrona y conmutación por error automática de Redis.
Otras características interesantes que Redis incluye de fábrica son la compatibilidad con pub/sub (comunicación cliente-servidor escalable y mensajería distribuida) y secuencias de comandos Lua ( Lua es un lenguaje rápido y liviano con una API pequeña y simple).

Primeros pasos con Redis

Para comenzar a trabajar con Redis, puede seguir la Guía de inicio en la documentación oficial para comenzar a construir con la CLI de Redis, o usar el complemento Heroku Data for Redis de Salesforce, que veremos brevemente a continuación.

Nota: Si bien los comandos reales son sintaxis normal de Redis, la sección de configuración del siguiente ejemplo asume que está utilizando uno de los planes pagos de Heroku .

El complemento Heroku Data for Redis no solo permite a los desarrolladores integrar rápida y convenientemente las instancias de Redis en las aplicaciones de Heroku, sino que también viene preconfigurado con funciones útiles como copias de seguridad de alta disponibilidad y procedimientos automáticos de conmutación por error . También maneja la autenticación de la conexión entre su aplicación Heroku y la instancia de Redis automáticamente.

Primero, cree y ejecute una nueva aplicación Heroku localmente . Luego, cree y adjunte una nueva instancia de Redis a su aplicación Heroku usando:

Mientras espera que se complete el proceso de creación, puede verificar su estado usando:

Nota: Dependiendo de su configuración, es posible que deba usar heroku addons:info redis -a your-heroku-app-name en su lugar.

A continuación, inicie la CLI de Redis ejecutando:

Nota: Si este comando no pone en marcha a Redis, es posible que primero deba instalar la CLI de Redis .

Ahora que está en la CLI de Redis, puede usar los comandos normales de Redis directamente desde la instancia de Redis de su aplicación Heroku.

Por ejemplo, PING confirma si estamos conectados a la instancia de Redis devolviendo PONG si su solicitud es exitosa.

SET establecerá un name de variable para almacenar una cadena de su nombre y GET recuperará el valor asignado a esa clave.

Podemos usar EXPIRE para configurar el valor del name para que caduque y se elimine después de 5 segundos. Las llamadas GET subsiguientes probarán que el valor de name existe y luego probarán que se eliminó.

Los siguientes LPUSH (presionar a la izquierda) y RPUSH (presionar a la derecha) crearán una nueva lista mylist que contiene la cadena b , agrega a al frente y c al final, luego obtiene la lista completa.

HMSET y HMGET crearán y obtendrán un user de hashmap :

Donde user tiene los siguientes valores:

Otras lecturas

Puede obtener más información sobre los tipos de datos de Redis y los comandos de la CLI en los documentos oficiales o consultando algunos de los siguientes recursos:

¡Gracias por leer y feliz almacenamiento en caché!

Sobre el Autor

tessa es promotora principal de desarrollo en Salesforce.

Obtenga las últimas publicaciones de blog de desarrolladores de Salesforce y episodios de podcast a través de Slack o RSS.

Agregar a Slack Suscríbete a RSS

Esta es una traducción realizada por EGA Futura, y este es el link a la publicación original: https://developer.salesforce.com/blogs/2022/11/an-illustrated-introduction-to-redis.html

Entradas recomendadas