Laboratorio de Valkey: aprende un almacén clave-valor compatible con Redis, con expiración y listas

Este laboratorio da a cada alumno un servidor Valkey propio al que escribir comandos. Valkey es un almacén clave-valor: guarda un valor bajo un nombre y lo devuelve cuando se le pide, que es lo que usan los sitios web para las sesiones, las cachés y los contadores. Entiende los mismos comandos que Redis, así que lo que se aprende aquí sirve igualmente.

No es un laboratorio de ataque. Ninguna copia tiene ruta a internet ni a otro alumno, y no tiene página web, así que todo se escribe en el terminal que hay a su lado.

Qué aprenden los alumnos

En qué se diferencia un almacén clave-valor de una tabla: SET y GET guardan y leen un valor por su clave, una clave puede recibir una vida útil con EX y contarse hacia atrás con TTL, y el almacén tiene algunas estructuras propias: una lista (RPUSH, LRANGE), un hash de campos con nombre (HSET, HGETALL) y un contador (INCR) que suma con exactitud aunque muchos clientes lo pidan a la vez. También leen las respuestas del almacén, el protocolo llamado RESP, y ven qué sobrevive cuando el laboratorio se detiene: los datos están en memoria y cada escritura se anota en un archivo de un volumen con nombre, y así se recuperan. Es adecuado para una introducción a las bases de datos y los almacenes de datos, o a las cachés y sesiones del desarrollo web.

Ejecútalo en tu navegador

El laboratorio inicia un solo servicio, valkey, y espera a que responda. El terminal no tiene el cliente habitual de Valkey, valkey-cli. La lección envía cada comando con nc, mediante una función de una línea llamada v, y las respuestas se muestran tal como llegan: +OK para un éxito, $5 y después el texto para un valor de cinco bytes, $-1 para una clave que no existe y :3 para un número.

  1. Abre la página Contenedor. Abre «Crear» en la barra y elige «Ejecutar un contenedor». Cualquiera puede abrir la página, y el laboratorio de Git y el de SQL se inician sin cuenta. Todos los demás laboratorios necesitan una cuenta gratuita: crea una, inicia sesión y pulsa «Iniciar».
  2. Busca el laboratorio. La tarjeta «Laboratorios de ejemplo» lista todos los ejemplos. Busca Valkey.
  3. Pulsa «Iniciar». «Iniciar» lo ejecuta tal cual, con una sola pulsación. «Editar el archivo primero» abre el archivo compose para que lo cambies antes de iniciarlo.
  4. Ábrelo. En la página del laboratorio, pulsa «Abrir terminal». No hay ningún enlace bajo «En tu navegador», porque Valkey no tiene página web. Escribe nc valkey 6379 y después SET greeting hello, pulsa Intro y el almacén responde +OK. GET greeting responde $5 y después hello. La lección define la función v para que v SET greeting hello haga lo mismo sin abrir antes una conexión.

Qué pedir a los alumnos que entreguen

Las respuestas de una sesión corta propia: una clave con expiración y TTL contando hacia atrás, una lista, un hash y un contador. Después una frase sobre lo que hizo la expiración y otra sobre lo que seguía allí tras detener e iniciar el laboratorio, y por qué. La última muestra si han entendido los datos en memoria frente a un archivo en un volumen.

Una lección básica en este laboratorio

Valkey Basics es una pequeña lección que se trabaja en este laboratorio. En ella el alumno crea la función v, guarda y lee un valor, da a una clave cinco segundos de vida y la ve desaparecer, y añade a una lista, a un hash y a un contador. Después detiene e inicia el laboratorio para ver qué se conservó.

Las cuentas personales gratuitas la tienen en el módulo Basics, que está en «Inicio», cada centro puede copiarla desde la carpeta Basics de la Biblioteca, y un centro nuevo la tiene en un módulo llamado Lab Basics (Sample). Es pequeña a propósito: muestra a un docente qué es una lección trabajada en un laboratorio, y el laboratorio hace el resto. Cópiala en un módulo tuyo para cambiarla.

El código en GitHub

El archivo compose no tiene Dockerfile: ejecuta una imagen pública estándar, valkey/valkey, fijada a una versión, con un usuario sin privilegios, 64 MB de memoria y un archivo de solo adición en un volumen con nombre. Valkey tiene licencia BSD-3-Clause y no lo distribuimos nosotros. Es la bifurcación de código abierto de Redis, usada aquí en lugar de Redis 8 y posteriores, que tienen otra licencia. El laboratorio no tiene salida a internet ni contraseña, porque nada más puede llegar al almacén; es un solo servicio, así que las funciones que necesitan un segundo servidor, como la replicación, no forman parte de él.

Asígnalo como trabajo

Indica en la tarea qué hay que entregar.

  1. Crea el laboratorio. En tu módulo añade una tarea y elige la tarjeta «Laboratorio de contenedores», y después «En un repositorio de GitHub». Indica https://github.com/mitsurutech/lab-valkey con la rama main. El archivo compose es el predeterminado, compose.yaml. Haz un fork del repositorio antes si quieres modificarlo.
  2. Publica y pruébalo. «Publicar» fija el commit que te mostraron, así que un cambio posterior en el repositorio no altera un laboratorio que ya has asignado. Inicia primero tu propia copia.
  3. Asígnalo. Asígnalo como cualquier tarea, con una fecha de entrega si quieres, e indica en la tarea qué hacer y qué entregar.
  4. Califica lo entregado. Abre la copia de un alumno y el trabajo que ha entregado, califícalo y devuélvelo con un motivo si necesita más.

Preguntas frecuentes

¿Esto es Redis?
Es Valkey, la bifurcación de código abierto de Redis, y responde a los mismos comandos. El laboratorio usa Valkey porque tiene licencia BSD-3-Clause, algo que Redis 8 y posteriores no tienen.
¿Por qué el terminal usa nc y no valkey-cli?
El terminal del laboratorio incluye psql, mariadb, curl, git y nc, pero ningún cliente de Valkey. Valkey acepta un comando como una línea de texto, así que nc puede enviarlo e imprimir la respuesta. En tu propio equipo puedes usar valkey-cli o redis-cli con el mismo laboratorio.
¿Qué queda después de detener e iniciar el laboratorio?
Lo que se escribió y no había expirado. El almacén anota cada escritura en un archivo de un volumen con nombre, que la plataforma guarda, y reconstruye su memoria a partir de él al iniciarse. Una clave cuya vida útil se agotó sigue sin estar.