Lanzamiento del DBMS Redis 7.0

Se ha publicado el lanzamiento del DBMS Redis 7.0, que pertenece a la clase de sistemas NoSQL. Redis proporciona funciones para almacenar datos clave/valor, mejoradas por la compatibilidad con formatos de datos estructurados como listas, hashes y conjuntos, así como la capacidad de ejecutar controladores de scripts del lado del servidor en Lua. El código del proyecto se suministra bajo la licencia BSD. Desde 2019, se suministran módulos adicionales que ofrecen capacidades avanzadas para usuarios corporativos, como RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, bajo una licencia RSAL patentada. El proyecto GoodFORM, que recientemente se ha estancado, intentó continuar con el desarrollo de versiones abiertas de estos módulos bajo la licencia AGPLv3.

A diferencia de los sistemas de almacenamiento en memoria como Memcached, Redis garantiza que los datos se almacenen de forma persistente en el disco y garantiza que la base de datos permanezca intacta en caso de una falla. El código fuente del proyecto se distribuye bajo licencia BSD. Las bibliotecas cliente están disponibles para los lenguajes más populares, incluidos Perl, Python, PHP, Java, Ruby y Tcl. Redis admite transacciones que le permiten ejecutar un grupo de comandos en un solo paso, lo que garantiza la coherencia y la coherencia (los comandos de otras solicitudes no pueden interferir) en la ejecución de un conjunto determinado de comandos y, en caso de problemas, le permite retroceder. cambios. Todos los datos están completamente almacenados en caché en la RAM.

Se proporcionan comandos como incremento/disminución, lista estándar y operaciones de conjunto (unión, intersección), cambio de nombre de clave, selecciones múltiples y funciones de clasificación para la gestión de datos. Se admiten dos modos de almacenamiento: sincronización periódica de datos en el disco y mantenimiento de un registro de cambios en el disco. En el segundo caso, se garantiza total seguridad de todos los cambios. Es posible organizar la replicación de datos maestro-esclavo en varios servidores, realizada en modo sin bloqueo. También está disponible un modo de mensajería de “publicación/suscripción”, en el que se crea un canal cuyos mensajes se distribuyen a los clientes mediante suscripción.

Cambios clave en Redis 7.0:

  • Se agregó soporte para funciones del lado del servidor. A diferencia de los scripts previamente admitidos en lenguaje Lua, las funciones no están vinculadas a la aplicación y tienen como objetivo implementar lógica adicional que amplíe las capacidades del servidor. Las funciones se procesan indisolublemente con los datos y en relación con la base de datos, y no con la aplicación, incluida la replicación y el almacenamiento en un almacenamiento persistente.
  • Se ha propuesto una segunda edición de la ACL, que le permite controlar el acceso a los datos en función de claves y le permite definir diferentes conjuntos de reglas para acceder a los comandos con la capacidad de vincular varios selectores (conjuntos de permisos) a cada usuario. Cada clave se puede identificar con una autoridad específica; por ejemplo, puede limitar el acceso a solo lectura o escritura de un determinado subconjunto de claves.
  • Se proporciona una implementación particionada (fragmentada) del paradigma de distribución de mensajes de publicación-suscripción que se ejecuta en un clúster, en el que se envía un mensaje a un nodo específico al que está conectado un canal de mensajes, después de lo cual este mensaje se redirige a los nodos restantes incluidos. en el fragmento. Los clientes pueden recibir mensajes suscribiéndose a un canal, tanto conectándose al nodo principal como a los nodos secundarios de la sección. El control se realiza mediante los comandos SSUBSCRIBE, SUNSUBSCRIBE y SPUBLISH.
  • Se agregó soporte para procesar subcomandos en la mayoría de los contextos.
  • Nuevos comandos agregados:
    • ZMPOP, BZMPOP.
    • LMPOP, BLMPOP.
    • SINTERCARD, ZINTERCARD.
    • SPUBLISH, SSUBSCRIBE, SUNSUBSCRIBE, PUBSUB SHARDCHANNELS/SHARDNUMSUB.
    • EXPIRETIME, PEXPIRETIME.
    • EVAL_RO, EVALSHA_RO, SORT_RO.
    • FUNCIÓN *, FCALL, FCALL_RO.
    • DOCUMENTOS DE COMANDO, LISTA DE COMANDOS.
    • HISTOGRAMA DE LATENCIA.
    • FRAGMENTOS DE CLÚSTER, ENLACES DE CLÚSTER, RANGO DELSLOTS DE CLUSTER, RANGO DE ADDSLOTS DE CLUSTER.
    • CLIENTE NO DESALOJO.
    • FUNCIONAMIENTO EN SECADO DE ACL.
  • Se ha proporcionado la capacidad de procesar múltiples configuraciones a la vez en una llamada CONFIG SET/GET.
  • Se han agregado las opciones "-json", "-2", "-scan", "-functions-rdb" a la utilidad redis-cli.
  • De forma predeterminada, el acceso del cliente a la configuración y los comandos que afectan la seguridad está deshabilitado (por ejemplo, los comandos DEBUG y MODULE están deshabilitados y está prohibido cambiar las configuraciones con el indicador PROTECTED_CONFIG). redis-cli ya no genera comandos que contienen datos confidenciales en un archivo de historial.
  • Se han introducido una gran parte de optimizaciones destinadas a aumentar el rendimiento y reducir el consumo de memoria. Por ejemplo, el consumo de memoria se ha reducido significativamente al habilitar el modo de clúster, al realizar operaciones de copia en escritura y al trabajar con claves hashes y zset. Lógica mejorada para vaciar datos al disco (llamada fsync). Se ha reducido la cantidad de paquetes de red y llamadas al sistema al enviar respuestas al cliente. Se ha mejorado la eficiencia de la replicación.
  • Se soluciona la vulnerabilidad CVE-2022-24735 en el entorno de ejecución de scripts Lua, que permite sustituir su propio código Lua y lograr su ejecución en el contexto de otro usuario, incluido uno con mayores privilegios.
  • Se corrigió la vulnerabilidad CVE-2022-24736, que permite que el proceso del servidor redis falle debido a la desreferencia del puntero NULL. El ataque se lleva a cabo mediante la carga de scripts Lua especialmente diseñados.

Fuente: opennet.ru

Añadir un comentario