Introducción a go-redis: potente cliente Redis para Go
\n\nRedis es un almacén de datos de tipo "clave-valor" de alto rendimiento que funciona en memoria RAM. Se utiliza para almacenamiento en caché, gestión de sesiones, colas de mensajes, clasificaciones y mucho más. Para interactuar con Redis desde Go existen varias bibliotecas, y go-redis (paquete github.com/redis/go-redis/v9) es la más popular, activamente mantenida y funcional.
Esta biblioteca proporciona una API Go limpia e idiomática para trabajar con todas las estructuras de datos de Redis (cadenas, listas, conjuntos, hashes, conjuntos ordenados, HyperLogLog, flujos, datos geoespaciales) y admite funciones avanzadas como agrupación en clústeres, Sentinel, Pub/Sub, canalización (pipelining) y scripts Lua. go-redis es totalmente compatible con Redis 7 y 8.
\n\nEn esta guía, analizaremos en detalle la instalación, los métodos principales, los errores típicos y escribiremos un ejemplo práctico real.
\n\nInstalación de go-redis
\n\nLa instalación se realiza con el comando estándar go get:
go get github.com/redis/go-redis/v9\n\nDespués de ejecutar este comando, la dependencia aparecerá en su go.mod. Asegúrese de tener instalado Go versión 1.18 o superior.
También necesitará un servidor Redis en funcionamiento (local o remoto). Para pruebas, puede iniciar Redis en Docker:
\n\ndocker run --name my-redis -p 6379:6379 -d redis\n\nInicio rápido: conectarse y hacer la primera solicitud
\n\nCree un archivo main.go y escriba un programa simple que se conecte a Redis, escriba y lea un valor.
package main\n\nimport (\n "context"\n "fmt"\n "github.com/redis/go-redis/v9"\n)\n\nfunc main() {\n // Creamos un contexto (se recomienda usar context.Background())\n ctx := context.Background()\n\n // Creamos un cliente\n rdb := redis.NewClient(&redis.Options{\n Addr: "localhost:6379", // dirección del servidor Redis\n Password: "", // contraseña (si la hay)\n DB: 0, // número de base de datos (por defecto 0)\n })\n\n // Verificamos la conexión con Ping\n pong, err := rdb.Ping(ctx).Result()\n if err != nil {\n panic(fmt.Sprintf("No se pudo conectar a Redis: %v", err))\n }\n fmt.Println("Conectado:", pong)\n\n // Establecemos la clave "name" con el valor "Alice"\n err = rdb.Set(ctx, "name", "Alice", 0).Err()\n if err != nil {\n panic(err)\n }\n\n // Leemos el valor de la clave "name"\n val, err := rdb.Get(ctx, "name").Result()\n if err != nil {\n panic(err)\n }\n fmt.Println("name:", val)\n\n // Cerramos la conexión al finalizar el programa\n defer rdb.Close()\n}\n\nEjecute el programa:
\n\ngo run main.go\n\nDebería ver:
\n\nConectado: PONG\nname: Alice\n\nMétodos principales de go-redis (8 o más)
\n\nTodos los métodos de go-redis devuelven un objeto *Cmd (o su especialización), que tiene el método .Result() para obtener el resultado y el error, .Val() para obtener solo el valor y .Err() para obtener solo el error. Esto permite manejar los resultados de forma flexible.
1. Set — establecer el valor de una clave
\nQué hace: Establece un valor para la clave especificada. Se puede definir un tiempo de vida (TTL) o 0 para almacenamiento indefinido.
\nParámetros:
\n- \n
ctx context.Context— contexto para controlar el tiempo de ejecución \n key string— nombre de la clave \n value interface{}— valor (se serializará) \n expiration time.Duration— tiempo de vida (0 — sin TTL) \n
Ejemplo:
\nerr := rdb.Set(ctx, " También en la biblioteca
Cliente Elasticsearch para Kotlin: integración, ejemplos y capacidades
Compression en JavaScript (Node.js): guía completa con ejemplos
Trabajo con imágenes en Kotlin: bibliotecas y herramientas
Envío de correo electrónico en Go: guía completa de bibliotecas y herramientas