Se ha publicado Redis 8.2, un sistema de gestión de bases de datos NoSQL. Redis ofrece funciones para almacenar datos en formato clave-valor, ampliadas con compatibilidad con formatos de datos estructurados como listas, hashes y conjuntos, así como la capacidad de ejecutar controladores de scripts Lua en el servidor. El código del proyecto está escrito en C y se distribuye bajo la licencia AGPLv3.
Redis DBMS admite transacciones que le permiten ejecutar un grupo de comandos en un solo paso, garantizando coherencia y coherencia (los comandos de otras solicitudes no pueden interferir) en la ejecución de un conjunto determinado de comandos y, en caso de problemas, permitiéndole rodar. cambios de espalda. Todos los datos están completamente almacenados en caché en la RAM. Las bibliotecas cliente están disponibles para los lenguajes más populares, incluidos Perl, Python, PHP, Java, Ruby y Tcl.
Los comandos de gestión de datos incluyen incremento/decremento, operaciones estándar de listas y conjuntos (unión, intersección), cambio de nombre de clave, selecciones múltiples y funciones de ordenación. Se admiten dos modos de almacenamiento: sincronización periódica de datos en disco y mantenimiento de un registro de cambios en disco. Este último garantiza la conservación completa de todos los cambios. También es posible la replicación de datos maestro-esclavo en múltiples instancias. servidoresSe ejecuta en modo no bloqueante. También está disponible un modo de mensajería de publicación/suscripción, que crea un canal desde el cual se distribuyen los mensajes a los clientes mediante suscripción.
Cambios clave en Redis 8.2:
- Se han optimizado más de 70 comandos para que se ejecuten más rápido que en Redis 8.0. Por ejemplo, el comando BITCOUNT ahora es un 35 % más rápido, mientras que las operaciones de lista LINSERT, LREM y LPOS son un 25 % más rápidas. Diecisiete de los comandos optimizados son ahora al menos un 17 % más rápidos y 5, al menos un 52 % más rápidos.

- Se optimizaron el código para gestionar operaciones concurrentes y E/S multiproceso, lo que permitió un aumento del 49 % en el número de operaciones procesadas por segundo en pruebas con 8 subprocesos de E/S con una distribución de carga del 20 % de solicitudes de escritura y el 80 % de solicitudes de lectura. servidor logró superar el hito de 1 millón de operaciones procesadas por segundo.

- El método de almacenamiento de datos en formato clave/valor ha cambiado radicalmente: ahora se utiliza una estructura kvobj unificada para el almacenamiento, lo que permite empaquetar el nombre de la clave, el valor corto y el tiempo de vida en un único bloque de memoria asignada y usar una única referencia a esta estructura en las tablas hash, en lugar de referencias separadas a claves, datos y tiempo de vida. Al almacenar valores de cadena cortos, el nuevo método de almacenamiento ha reducido el consumo de memoria entre un 25 % y un 37 %.

- Se realizó la optimización del almacenamiento de datos en formato JSON, lo que permitió reducir el consumo de memoria en un 25-67% al almacenar números enteros y de punto flotante.
- El mecanismo de flujos, utilizado para procesar y almacenar el flujo de mensajes, se ha complementado con los nuevos comandos XACKDEL y XDELEX, lo que simplifica el trabajo con flujos conectados a varios destinatarios (grupos de consumidores). Estos comandos solucionan el problema de eliminar un mensaje solo después de que todos los controladores confirmen su recepción.
- Se han agregado los nuevos operadores lógicos DIFF, DIFF1, ANDOR y ONE al comando BITOP, que está diseñado para realizar operaciones bit a bit.
- Se agregó el nuevo tipo de índice vectorial SVS-VAMANA, que admite la compresión vectorial.
- Se han agregado nuevas métricas: carga por ranura y distribución del tamaño de clave para los tipos de datos base.
Fuente: opennet.ru



