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.