Redis 7.0 llega con mejoras de rendimiento, corrección de errores y mas
La nueva versión del DBMS Redis 7.0 ya fue liberada, Redis proporciona funciones para almacenar datos en formato clave/valor, ampliadas con soporte para formatos de datos estructurados como listas, hashes y conjuntos, así como la capacidad de ejecutar controladores de secuencias de comandos Lua del lado del servidor.
A diferencia de los sistemas de almacenamiento en memoria como Memcached, Redis proporciona almacenamiento persistente de datos en disco y garantiza la seguridad de la base de datos en caso de un cierre anormal. Los textos fuente del proyecto se distribuyen bajo la licencia BSD.
Las bibliotecas de clientes 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 coherencia y consistencia (los comandos de otras solicitudes no pueden bloquear) la ejecución de un conjunto determinado de comandos y, en caso de problemas, le permite revertir los cambios. Todos los datos se almacenan completamente en caché en la RAM.
Principales novedades de Redis 7.0
En esta nueva versión que se presenta del DBMS se añadió el soporte para funciones del lado del servidor, pues diferencia de los scripts de Lua admitidos anteriormente, las funciones no son específicas de la aplicación y están destinadas a implementar una lógica adicional que amplíe las capacidades del servidor.
Las funciones se procesan de manera indisoluble 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 persistente.
Otra de las novedades que se destaca de Redis 7.0 es la segunda edición de la ACL, que permite controlar el acceso a los datos en función de las claves y permite definir diferentes conjuntos de reglas de acceso para comandos con la capacidad de vincular varios selectores (conjuntos de permisos) a cada usuario. Cada clave se puede identificar con ciertos permisos, por ejemplo, puede restringir el acceso para solo leer o escribir en un determinado subconjunto de claves.
Ademas de ello, se destaca que Redis 7.0 proporciona una implementación fragmentada del paradigma de distribución de mensajes Publish-Subscribe, que se ejecuta en un clúster, en el que se envía un mensaje a un nodo específico al que está vinculado el canal de mensajes, después de lo cual este mensaje se redirige a los nodos restantes incluidos en el casco. Los clientes pueden recibir mensajes suscribiéndose a un canal, tanto conectándose al nodo primario como a los nodos secundarios de la sección.
Tambien se destaca que se proporcionó la capacidad de manejar múltiples configuraciones a la vez en una sola llamada CONFIG SET/GET y que se agregaron las opciones «–json», «-2», «–scan», «–functions-rdb» a la utilidad redis-cli.
De forma predeterminada, el acceso a las configuraciones y comandos que afectan la seguridad está deshabilitado para los clientes (por ejemplo, los comandos DEBUG y MODULE están deshabilitados, está prohibido cambiar configuraciones con el indicador PROTECTED_CONFIG). Redis-cli dejó de enviar comandos que contenían datos confidenciales al archivo de historial.
Por otra parte, se destaca que se realizó una gran parte de las optimizaciones destinadas a mejorar el rendimiento y reducir el consumo de memoria. Por ejemplo, el consumo de memoria se ha reducido significativamente cuando el modo de clúster está habilitado, cuando se realizan operaciones de copia en escritura y cuando se trabaja con claves hash y zset, ademas de que la lógica fue mejorada para vaciar datos al disco (llamada fsync).
Se ha solucionado la vulnerabilidad CVE-2022-24735 en el entorno de ejecución de scripts Lua, que permite sustituir el código Lua propio y provocar que se ejecute en el contexto de otro usuario, incluidos aquellos con mayores privilegios.
Además, podemos señalar una vulnerabilidad (CVE-2022-0543) en paquetes con Redis para Ubuntu y Debian (el problema es específico de ensamblados individuales y no está relacionado con Redis en sí), que permite ejecutar código Lua arbitrario en un servidor remoto y omitiendo el mecanismo de aislamiento del espacio aislado del entorno para ejecutar scripts en Redis.
Se solucionó la vulnerabilidad CVE-2022-24736 que podría permitir que el proceso del servidor redis se bloquee debido a una falta de referencia de puntero nulo. El ataque se lleva a cabo cargando scripts Lua especialmente diseñados.
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.