En este módulo, exploraremos comandos avanzados de Redis que te permitirán aprovechar al máximo las capacidades de esta poderosa base de datos en memoria. Estos comandos son esenciales para realizar operaciones complejas y optimizar el rendimiento de tus aplicaciones.

Contenido

Comandos de Manipulación de Estructuras de Datos

1.1. BITFIELD

El comando BITFIELD permite realizar operaciones a nivel de bits en cadenas. Es útil para almacenar múltiples valores en una sola clave.

> BITFIELD mykey SET u8 0 100
(integer) 0
> BITFIELD mykey GET u8 0
1) (integer) 100

Explicación:

  • SET u8 0 100: Establece un valor de 8 bits sin signo en el offset 0.
  • GET u8 0: Obtiene el valor de 8 bits sin signo en el offset 0.

1.2. HSCAN

El comando HSCAN permite iterar sobre los campos y valores de un hash de manera incremental.

> HSET myhash field1 "Hello" field2 "World"
(integer) 2
> HSCAN myhash 0 MATCH field*
1) "0"
2) 1) "field1"
   2) "Hello"
   3) "field2"
   4) "World"

Explicación:

  • HSCAN myhash 0 MATCH field*: Itera sobre los campos que coinciden con el patrón field*.

Comandos de Gestión de Claves

2.1. EXPIRE y TTL

Estos comandos permiten establecer un tiempo de vida para una clave y consultar el tiempo restante.

> SET mykey "Hello"
OK
> EXPIRE mykey 10
(integer) 1
> TTL mykey
(integer) 10

Explicación:

  • EXPIRE mykey 10: Establece un tiempo de vida de 10 segundos para mykey.
  • TTL mykey: Devuelve el tiempo de vida restante de mykey.

2.2. RENAME y RENAMENX

Estos comandos permiten renombrar claves.

> SET mykey "Hello"
OK
> RENAME mykey mynewkey
OK
> SET mykey "World"
OK
> RENAMENX mykey mynewkey
(integer) 0

Explicación:

  • RENAME mykey mynewkey: Renombra mykey a mynewkey.
  • RENAMENX mykey mynewkey: Renombra mykey a mynewkey solo si mynewkey no existe.

Comandos de Publicación y Suscripción

3.1. PUBLISH y SUBSCRIBE

Estos comandos permiten implementar un sistema de mensajería basado en publicación y suscripción.

# Cliente 1
> SUBSCRIBE mychannel
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "mychannel"
3) (integer) 1

# Cliente 2
> PUBLISH mychannel "Hello, World!"
(integer) 1

Explicación:

  • SUBSCRIBE mychannel: Suscribe al cliente al canal mychannel.
  • PUBLISH mychannel "Hello, World!": Publica el mensaje "Hello, World!" en el canal mychannel.

Comandos de Scripts y Lua

4.1. EVAL

El comando EVAL permite ejecutar scripts Lua en Redis.

> EVAL "return redis.call('SET', KEYS[1], ARGV[1])" 1 mykey "Hello, Lua!"
OK
> GET mykey
"Hello, Lua!"

Explicación:

  • EVAL "return redis.call('SET', KEYS[1], ARGV[1])" 1 mykey "Hello, Lua!": Ejecuta un script Lua que establece el valor de mykey a "Hello, Lua!".

Ejercicios Prácticos

Ejercicio 1: Manipulación de Bits

  1. Usa el comando BITFIELD para establecer un valor de 16 bits sin signo en el offset 8 de una clave llamada bitkey.
  2. Recupera el valor establecido en el offset 8.

Solución:

> BITFIELD bitkey SET u16 8 300
(integer) 0
> BITFIELD bitkey GET u16 8
1) (integer) 300

Ejercicio 2: Gestión de Claves

  1. Crea una clave tempkey con el valor "Temporary".
  2. Establece un tiempo de vida de 20 segundos para tempkey.
  3. Renombra tempkey a permanentkey solo si permanentkey no existe.

Solución:

> SET tempkey "Temporary"
OK
> EXPIRE tempkey 20
(integer) 1
> RENAMENX tempkey permanentkey
(integer) 1

Ejercicio 3: Publicación y Suscripción

  1. Suscríbete a un canal llamado news.
  2. Publica un mensaje "Breaking News!" en el canal news.

Solución:

# Cliente 1
> SUBSCRIBE news
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "news"
3) (integer) 1

# Cliente 2
> PUBLISH news "Breaking News!"
(integer) 1

Conclusión

En esta sección, hemos explorado comandos avanzados de Redis que te permiten realizar operaciones complejas y optimizar el rendimiento de tus aplicaciones. Hemos cubierto comandos para la manipulación de estructuras de datos, gestión de claves, publicación y suscripción, y ejecución de scripts Lua. Estos comandos son herramientas poderosas que te ayudarán a aprovechar al máximo Redis en tus proyectos.

En el próximo módulo, profundizaremos en las transacciones y el pipelining en Redis, lo que te permitirá realizar operaciones atómicas y optimizar el rendimiento de tus aplicaciones aún más. ¡Sigue adelante!

© Copyright 2024. Todos los derechos reservados