Se ha publicado la versión de la base de datos Redis 8.4, que pertenece a la clase de sistemas NoSQL. Redis proporciona funciones para almacenar datos en formato clave/valor, con soporte ampliado para formatos de datos estructurados como listas, hashes y conjuntos, así como la posibilidad de ejecutar scripts manejadores en el lado del servidor en el lenguaje Lua. El código del proyecto está escrito en C y se distribuye bajo la licencia AGPLv3.
La base de datos Redis admite transacciones, que permiten ejecutar un grupo de comandos en un solo paso, garantizando la coherencia y secuencialidad (los comandos de otras solicitudes no pueden interponerse) en la ejecución de un conjunto de comandos dado, y en caso de problemas, permite revertir cambios. Todos los datos se almacenan completamente en la memoria RAM. Se encuentran disponibles bibliotecas de cliente para la mayoría de los lenguajes populares, incluidos Perl, Python, PHP, Java, Ruby y Tcl.
Para la gestión de datos, se proporcionan comandos como incremento/decremento, operaciones estándar sobre listas y conjuntos (unión, intersección), renombramiento de claves, múltiples selecciones y funciones de ordenación. Se admiten dos modos de almacenamiento: la sincronización periódica de datos en disco y el mantenimiento en el disco de un registro de cambios. En el segundo caso, se garantiza la completa preservación de todos los cambios. Es posible organizar la replicación de datos master-slave en varios servidores, llevada a cabo en modo no bloqueante. También está disponible el modo de mensajería de "publicación/suscripción", en el que se crea un canal cuyas mensajes se distribuyen a los clientes por suscripción.
Cambios clave en Redis 8.4:
- Se ha añadido el comando «FT.HYBRID» con una implementación de búsqueda híbrida, que combina en una sola consulta las capacidades de búsqueda de texto completo y vectorial, considerando tanto coincidencias directas como proximidad semántica. Se soportan capacidades de agregación de resultados con la misma sintaxis que el comando «FT.AGGREGATE».
- Se ha incrementado el rendimiento en aplicaciones típicas de Redis para almacenamiento en caché. Por ejemplo, bajo cargas que incluyen un 10% de operaciones de escritura (SET) y un 90% de operaciones de lectura (GET) con valores de cadena de 1 KB, el aumento en el rendimiento fue del 30%.

- Se ha mejorado el rendimiento de las operaciones de búsqueda (FT.SEARCH) y de agregación de resultados (FT.AGGREGATE). En sistemas con alto tráfico y un gran número de solicitudes paralelas, se observa un aumento en el rendimiento y una reducción de la latencia de hasta 4.7 veces durante la búsqueda y hasta 1.4 veces durante la agregación de resultados.

- Se ha optimizado la asignación de memoria durante la ejecución de solicitudes y se ha proporcionado la posibilidad de configurar el comportamiento ante el agotamiento de memoria disponible (OOM, out-of-memory).
- Se ha reducido el consumo de memoria para almacenar cadenas pequeñas (hasta 7 bytes) en estructuras de tipo JSON. Por ejemplo, un array en JSON que incluye 500 elementos pequeños en formato clave/valor ahora ocupa un 37% menos de memoria.
- Se ha aumentado la eficiencia del almacenamiento de arreglos numéricos en JSON, donde todos los elementos tienen un único tipo (si antes se guardaba el tipo y el valor para cada elemento en dicho arreglo, ahora se guarda el tipo una sola vez para todo el arreglo). En una prueba realizada, tales arreglos con un millón de elementos homogéneos ahora requieren entre un 50% y un 92% menos de memoria, dependiendo del tipo.
- Al comando SET se le han añadido las opciones IFEQ, IFNE, IFDEQ e IFDNE, que permiten actualizaciones de claves de cadena en situaciones donde el valor asociado no ha sido modificado por otro cliente desde su extracción, utilizando un solo comando.
- Se ha añadido el comando XDELEX para la eliminación atómica de una clave de cadena, si su valor relacionado no ha cambiado desde la extracción.
- Se ha añadido el comando DIGEST, que devuelve el hash del valor asociado con la clave especificada.
- Se ha añadido la opción "CLAIM " al comando XREADGROUP para leer tanto mensajes pendientes (idle) como mensajes entrantes (incoming).
- Se ha añadido el comando MSETEX para establecer o actualizar atómicamente múltiples claves de cadena a la vez, así como para actualizar su tiempo de vida.
- Se ha añadido un mecanismo de migración atómica de slots entre nodos de cluster (ASM - Migración Atómica de Slots), similar a la replicación síncrona completa, pero que opera a nivel de slots individuales de almacenamiento de datos. Se ha añadido el comando CLUSTER MIGRATION, con el que se pueden importar slots de otros nodos, rastrear el progreso de la migración y, si es necesario, marcar las operaciones de migración pendientes.
- Se ha añadido el comando CLUSTER SLOT-STATS para evaluar la estadística en el cluster en relación con slots individuales, como el número de claves, la carga del CPU y la entrada/salida de red.
Fuente: opennet.ru


