Se ha publicado la versión de la base de datos Redis 8.2, que pertenece a la clase de sistemas NoSQL. Redis ofrece funciones para almacenar datos en formato clave/valor, ampliadas con el soporte de formatos de datos estructurados como listas, hashes y conjuntos, así como la posibilidad de ejecutar scripts de procesamiento 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.2:
- Se han optimizado más de 70 comandos, que ahora funcionan más rápido que en Redis 8.0. Por ejemplo, el comando BITCOUNT se ha vuelto un 35% más rápido, y los comandos para operaciones con listas LINSERT, LREM y LPOS son un 25% más rápidos. 17 de los comandos optimizados son más rápidos en al menos un 5%, y 52 son más rápidos en al menos un 2%.

- Se han realizado optimizaciones en el código de manejo de operaciones concurrentes y en la entrada/salida multihilo, lo que ha permitido aumentar en un 49% el número de operaciones procesadas por segundo en pruebas con 8 hilos de entrada/salida, distribuyendo la carga en un 20% de solicitudes de escritura y un 80% de lectura. En una prueba servidor se logró superar el umbral de 1 millón de operaciones procesadas por segundo.

- Se ha cambiado fundamentalmente el método de almacenamiento de datos en formato clave/valor: ahora se utiliza una estructura unificada kvobj para empaquetar el nombre de la clave, un valor corto y el tiempo de vida en un solo bloque de memoria, utilizando una única referencia a esta estructura en tablas hash, en lugar de referencias separadas para claves, datos y TTL. Al almacenar valores de cadenas cortas, el nuevo método de almacenamiento ha permitido reducir el consumo de memoria entre un 25 y un 37%.

- Se ha optimizado el almacenamiento de datos en formato JSON, lo que ha permitido reducir el consumo de memoria entre un 25 y un 67% al almacenar números enteros y números de punto flotante.
- Se han añadido nuevos comandos XACKDEL y XDELEX al mecanismo Streams, que se utiliza para procesar y almacenar flujos de mensajes, facilitando el trabajo con flujos conectados a múltiples receptores (grupos de consumidores). Estos comandos resuelven la tarea de eliminar un mensaje solo después de que su recepción se haya confirmado por todos los manejadores.
- Se han añadido nuevos operadores lógicos DIFF, DIFF1, ANDOR y ONE al comando BITOP, diseñado para realizar operaciones bit a bit.
- Se ha añadido un nuevo tipo de índices de vectores SVS-VAMANA, que soporta la compresión de vectores.
- Se han añadido nuevas métricas: carga por separado en diferentes ranuras y distribución de tamaños de claves para tipos de datos básicos.
Fuente: opennet.ru



