Comandos Fundamentales de Hashes en Raze

Clase 11 de 20Curso de Azure Cache para Redis

Resumen

Dominar los hashes en Redis es un paso fundamental para trabajar con estructuras de datos más sofisticadas dentro de este sistema de caché. A diferencia de los keys simples o las listas, los hashes permiten asociar un identificador único a un conjunto de atributos, abriendo la puerta a modelar objetos complejos de forma eficiente y flexible.

¿Qué es un hash en Redis y por qué es diferente a un key?

Un hash funciona como una llave con identificador único que apunta a múltiples valores en lugar de uno solo [0:26]. Se puede imaginar como una combinación entre los keys y las lists: el key actúa como identificador del objeto y la lista representa los atributos de ese objeto. Es, en esencia, un tipo compuesto que eleva la complejidad respecto a las estructuras básicas.

Esta particularidad convierte a los hashes en un patrón de referencia para comprender otros tipos de datos especializados que ofrece Redis.

¿Cómo crear y consultar hashes con hmset y hget?

El comando principal es hmset [1:09], que significa hash multiple set. La m es clave: permite asignar varios atributos en una sola instrucción.

Por ejemplo, para crear un estudiante:

hmset estudiante:48 nombre "Dr. Who" age 25 average 4.9

Esto almacena el hash estudiante:48 con tres atributos de una vez [1:30]. Para recuperar un atributo específico se usa hget:

hget estudiante:48 age

Esto retorna 25 [2:16]. El mismo patrón aplica para cualquier campo: nombre, promedio o el que se necesite.

¿Cómo obtener todos los atributos con hgetall?

Cuando se necesitan todos los campos, el comando hgetall trae la información completa sin especificar un atributo particular [2:44]:

hgetall estudiante:48

El resultado llega como una lista de pares: nombre del atributo seguido de su valor [3:06]. No se entregan como pares explícitos tipo clave=valor, sino como elementos consecutivos donde se sabe que van de dos en dos.

¿Cada hash puede tener atributos distintos?

Sí, y esto es fundamental. Cada hash es independiente del otro [4:14]. Un estudiante puede tener nombre, edad y promedio, mientras que otro puede incluir además nacionalidad:

hmset estudiante:2048 nombre "Steve Rogers" age 125 average 5 nationality USA

No existe un esquema rígido como en una tabla relacional. Los datos son no estructurados, lo que ofrece flexibilidad pero requiere estrategias para consultarlos correctamente.

¿Cómo inspeccionar campos y valores con hkeys y hvals?

Para saber qué campos contiene un hash se utiliza hkeys [5:40]:

hkeys estudiante:2048

Retorna la lista de campos: nombre, edad, promedio, nacionalidad. De forma complementaria, hvals devuelve únicamente los valores [6:22]:

hvals estudiante:48

Combinando ambos comandos se puede mapear cada valor a su campo correspondiente, ya que mantienen el mismo orden de aparición.

¿Cómo simular una base de datos combinando hashes y listas?

Aunque Redis no es una base de datos relacional, se pueden crear asociaciones entre estructuras [4:38]. Por ejemplo:

  • Crear una lista llamada estudiantes con los IDs: 48, 2048, 25.
  • Consultar esa lista para obtener los identificadores.
  • Usar cada ID para hacer hgetall estudiante:ID y recuperar los datos completos.

Esto implica hacer ciertas maniobras que no serían necesarias en una base de datos tradicional, pero el resultado es alcanzable.

¿Qué más ofrece Redis más allá de los hashes?

Redis incluye listas ordenadas que mantienen orden alfabético o numérico con modificadores específicos [7:18]. También existen tipos de datos que permiten realizar operaciones de conjuntos: unión, intersección y otras operaciones similares a las que se logran con joins en SQL [7:40].

  • Las librerías que comparten sesión entre instancias usan estos tipos especializados internamente [8:10].
  • Los proveedores de caché de alta velocidad o caché cifrada también se apoyan en estos objetos.
  • A nivel práctico, lo habitual es usar librerías que abstraen estos comandos en escenarios probados [8:38].

Sin embargo, si el proyecto requiere un nivel de especialización mayor o se necesita crear una librería propia sobre Redis, conocer estos comandos internos se vuelve indispensable [8:56].

Explorar la documentación completa de instrucciones de Redis y experimentar con estos tipos de datos es la mejor forma de ampliar las posibilidades. ¿Con qué tipo de estructura te gustaría empezar a practicar?