Redis 8 características
Redis 8.2 introduce mejoras significativas con respecto a Redis 7.x al ofrecer un mayor rendimiento, una mayor eficiencia de memoria, una mayor observabilidad y una mejor experiencia para el desarrollador. 8.2 ofrece nuevas capacidades en Streams, mapas de bits, búsqueda vectorial y métricas de clústeres, al tiempo que conserva el modelo de programación familiar Redis.
Las principales mejoras de alto nivel de 8.2 son las siguientes:
- Aumento significativo del rendimiento en los comandos y cargas de trabajo más habituales.
- Reducción del uso de memoria, especialmente para JSON y metadatos de claves.
- Nuevas funciones en Streams, operaciones con bits y búsqueda vectorial.
- Métricas ampliadas y observabilidad para clústeres y replicación.
Actualización de Redis 7.2 a Redis 8.2
Para obtener información sobre cómo actualizar de Redis 7.2 a Redis 8.2, consulte Actualización a una nueva versión principal.
Redis módulos
Redis 8 admite varios módulos oficiales que amplían su funcionalidad para casos de uso avanzados. Los módulos clave y sus capacidades se describen en las secciones siguientes.
RedisBloom
RedisBloom es un módulo oficial de Redis que proporciona estructuras de datos probabilísticas: Filtro Bloom, Filtro Cuckoo, Esbozo Count-Min y Top-K. Estas estructuras cambian la exactitud por una eficiencia espacial y una velocidad extremas, lo que las hace ideales para cuando se aceptan respuestas aproximadas con un límite de error conocido.
Las principales funciones de RedisBloom son las siguientes:
-
Filtro Bloom: comprueba si un elemento puede estar en un conjunto, con probabilidad configurable de falsos positivos y sin falsos negativos.
-
Filtro Cuckoo: similar a Bloom, pero admite las supresiones de forma más natural.
-
Count-Min Sketch: estima la frecuencia de los eventos en forma de flujo (por ejemplo, cuántas veces aparece una tecla).
-
Top-K: rastrea los elementos más frecuentes de un flujo de datos.
Los casos típicos de uso de RedisBloom son los siguientes:
-
Comprobaciones de duplicados y de "visto antes" (URL, correos electrónicos e ID de usuario).
-
Detección de fraudes y prevención de abusos (señalización de patrones sospechosos sin almacenar el historial completo).
-
Sistemas de recomendación y listas de tendencias que utilizan Count-Min Sketch y Top-K.
-
Prefiltros de caché para evitar búsquedas innecesarias en el backend.
RedisBloom ejemplo
Crear un filtro Bloom con una tasa de error del 1% y una capacidad de 1000:
> BF.RESERVE bikes:models 0.01 1000
OK
Para añadir y comprobar un nombre de modelo:
> BF.ADD bikes:models "Smoky Mountain Striker"
(integer) 1
> BF.EXISTS bikes:models "Smoky Mountain Striker"
(integer) 1
Para más información, consulte la documentación del filtro RedisBloom
RediSearch
RediSearch es un motor de consulta e indexación para Redis que proporciona búsqueda de texto completo, indexación secundaria, agregaciones y soporte para búsqueda de similitud vectorial. RediSearch indexa los datos de Redis (por ejemplo, hashes y JSON) y permite realizar potentes consultas con puntuación, filtrado y resaltado.
Las principales funciones de RediSearch son las siguientes:
-
Búsqueda de texto completo con stemming, fonética y concordancia difusa.
-
Campos numéricos, de etiquetas y geoespaciales para filtros avanzados.
-
Motor de agregación para facetado, análisis y clasificación.
-
Integración con campos vectoriales para la búsqueda semántica y aproximada del vecino más próximo (RNA).
Los casos típicos de uso de RediSearch son los siguientes:
-
Búsqueda en el catálogo de productos con filtros y facetas.
-
Búsqueda de registros y eventos con filtros de texto libre y estructurados.
-
Búsqueda en tiempo real de contenidos de los usuarios (tweets, posts y documentos).
-
Búsqueda combinada de texto y vectores para aplicaciones basadas en IA.
RediSearch ejemplo
Para crear un índice y añadir un documento:
> FT.CREATE idx ON HASH PREFIX 1 "doc:" SCHEMA title TEXT
OK
> HSET doc:1 title "hello redis"
(integer) 1
Para buscar por texto:
> FT.SEARCH idx "hello"
1) (integer) 1
2) "doc:1"
3) 1) "title"
2) "hello redis"
Para más información, consulte la documentación de RediSearch.
RedisJSON
RedisJSON introduce un tipo de datos JSON nativo para Redis, que permite almacenar, recuperar y actualizar parcialmente documentos JSON que utilicen una sintaxis similar a JSONPath. RedisJSON está optimizado para acceder rápidamente a los subdocumentos y se integra con otras funciones de Redis, como RediSearch.
Las principales funciones de RedisJSON son las siguientes:
-
Almacenar documentos JSON estructurados como valores de primera clase.
-
Recupere o actualice rutas específicas sin cargar todo el documento.
-
Soporte para matrices, objetos y estructuras anidadas.
-
Opción de integración con funciones de búsqueda y consulta para indexar campos JSON.
Los casos típicos de uso de RedisJSON son los siguientes:
-
Perfiles de usuario y sesiones con campos anidados que se actualizan con frecuencia.
-
Documentos de configuración y banderas de características.
-
Catálogos de productos u objetos de contenido que se comparten entre servicios.
-
API basadas en JSON en las que Redis actúa como almacén de respaldo de alta velocidad.
RedisJSON ejemplo:
Para almacenar un simple documento JSON:
127.0.0.1:6379> JSON.SET user:1 $ '{"name":"Alice","age":30}'
OK
Para obtener un campo:
127.0.0.1:6379> JSON.GET user:1 $.name
"\"Alice\""
Para más información, consulte la documentación de RedisJSON.
RedisTimeSeries
RedisTimeSeries es un módulo para la ingestión, el almacenamiento, la consulta, la agregación y el muestreo descendente de datos de series temporales. RedisTimeSeries añade un tipo de datos de serie temporal y comandos relacionados para modelar métricas y eventos a lo largo del tiempo.
Las principales funciones de RedisTimeSeries son las siguientes:
-
Ingesta de alto rendimiento con sellado de tiempo automático.
-
Consultas de rango sobre intervalos de tiempo, con agregaciones como avg, min, max y sum.
-
Políticas de retención y reglas de compactación para el almacenamiento a largo plazo.
-
Etiquetas para agrupar y consultar conjuntos de series temporales.
Los casos típicos de uso de RedisTimeSeries son los siguientes:
-
Métricas de infraestructura y aplicaciones (CPU, memoria, latencia).
-
IoT lecturas de sensores y telemetría.
-
Datos financieros y métricas de mercado.
-
Indicadores clave de rendimiento y cuadros de mando operativos.
RedisTimeSeries ejemplo
Para crear una serie temporal y añadir un valor:
> TS.CREATE temp:room1
OK
> TS.ADD temp:room1 * 25.3
(integer) 1736846400000
Para obtener la última muestra:
> TS.GET temp:room1
1) (integer) 1736846400000
2) "25.3"
Para más información, consulte la documentación de RedisTimeSeries.
Redis Vector
Redis Vector proporciona un tipo de datos vectorial y capacidades de búsqueda de similitud vectorial, soportando consultas de vecino más cercano aproximado (RNA) sobre incrustaciones. Esto permite que las cargas de trabajo de IA y ML, como la búsqueda semántica y las recomendaciones, se ejecuten directamente en Redis.
Las principales funciones de Redis Vector son las siguientes:
-
Almacenamiento de vectores de alta dimensión (por ejemplo, 128-1536 dimensiones) con tipos de índice configurables como HNSW y plano.
-
Búsqueda del vecino más próximo (KNN) en campos vectoriales utilizando métricas de distancia como el coseno, el producto interior o L2.
-
Consultas híbridas que combinan la similitud vectorial con condiciones de filtro en campos estructurados.
-
Integración con RediSearch o Query Engine para esquemas flexibles.
Los casos de uso típicos de Redis Vector son los siguientes:
-
Búsqueda semántica de documentos para cadenas RAG.
-
Recomendaciones personalizadas utilizando incrustaciones de usuarios o elementos.
-
Búsqueda por similitud de imágenes, audio o código incrustado.
-
Detección de fraudes y anomalías mediante incrustaciones aprendidas.
Redis Ejemplo de vector:
Para crear un índice vectorial mínimo y un documento (ejemplo 4-dim):
> FT.CREATE vIdx ON HASH PREFIX 1 "vdoc:" \
SCHEMA embedding VECTOR HNSW 6 TYPE FLOAT32 DIM 4 DISTANCE_METRIC COSINE
OK
> HSET vdoc:1 embedding "\x00\x00\x80?\x00\x00\x80?\x00\x00\x80?\x00\x00\x80?"
(integer) 1
Para KNN buscar el vector más cercano:
> FT.SEARCH vIdx "(*=>[KNN 1 @embedding $v AS score])" \
PARAMS 2 v "\x00\x00\x80?\x00\x00\x80?\x00\x00\x80?\x00\x00\x80?" SORTBY score DIALECT 2
1) (integer) 1
2) "vdoc:1"
3) 1) "embedding"
2) "\x00\x00\x80?..."
3) "score"
4) "0.000000"
Para más información, consulte la documentación Conceptos de búsqueda vectorial.
Notas de la versión y registro de cambios de Redis 7 a Redis 8
Las diferencias funcionales entre Redis 7 y Redis 8 son las siguientes:
-
Comandos Streams XDELEX y XACKDEL mejorados para el ciclo de vida atómico de los mensajes y una gestión más limpia de los grupos de consumidores.
-
Operaciones de mapa de bits ampliadas que utilizan operadores BITOP más ricos para el análisis de grandes conjuntos de bits.
-
Capacidades de búsqueda vectorial más maduras integradas en el motor de consulta.
-
Múltiples correcciones de seguridad y estabilidad no disponibles en versiones anteriores de 7.x.
-
La distribución y el embalaje de los módulos se consolidan en 8.x, lo que simplifica la implantación.