Lanzamento do DBMS Redis 7.0

Publicouse a versión do DBMS Redis 7.0, que pertence á clase de sistemas NoSQL. Redis ofrece funcións para almacenar datos de clave/valor, melloradas pola compatibilidade con formatos de datos estruturados como listas, hash e conxuntos, así como a posibilidade de executar controladores de scripts no servidor en Lua. O código do proxecto ofrécese baixo a licenza BSD. Módulos adicionais que ofrecen capacidades avanzadas para usuarios corporativos, como RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, fornécense baixo unha licenza propietaria RSAL desde 2019. O proxecto GoodFORM, que estivo estancado recentemente, intentou continuar co desenvolvemento de versións abertas destes módulos baixo a licenza AGPLv3.

A diferenza dos sistemas de almacenamento en memoria como Memcached, Redis garante que os datos se almacenen de forma persistente no disco e garante que a base de datos permaneza intacta en caso de fallo. O código fonte do proxecto distribúese baixo a licenza BSD. As bibliotecas cliente están dispoñibles para os idiomas máis populares, incluíndo Perl, Python, PHP, Java, Ruby e Tcl. Redis admite transaccións, que permiten executar un grupo de comandos nun só paso, garantindo a coherencia e a coherencia (os comandos doutras solicitudes non poden interferir) na execución dun determinado conxunto de comandos e, en caso de problemas, permitíndolle retroceder. cambios. Todos os datos están completamente almacenados na memoria RAM.

Para a xestión de datos ofrécense comandos como aumentar/disminución, lista estándar e operacións de conxunto (unión, intersección), cambio de nome das teclas, seleccións múltiples e funcións de clasificación. Admítense dous modos de almacenamento: sincronización periódica de datos ao disco e mantemento dun rexistro de cambios no disco. No segundo caso, a seguridade total de todos os cambios está garantida. É posible organizar a replicación de datos mestre-escravo a varios servidores, levada a cabo en modo non bloqueante. Tamén está dispoñible un modo de mensaxería “publicar/subscribirse”, no que se crea unha canle, a partir da cal se distribúen as mensaxes aos clientes por subscrición.

Cambios clave en Redis 7.0:

  • Engadido soporte para funcións do lado do servidor. A diferenza dos scripts admitidos anteriormente na linguaxe Lua, as funcións non están vinculadas á aplicación e están dirixidas a implementar unha lóxica adicional que amplía as capacidades do servidor. As funcións son procesadas de forma inextricable cos datos e en relación coa base de datos, e non coa aplicación, incluíndo ser replicadas e almacenadas en almacenamento persistente.
  • Propúxose unha segunda edición da ACL, que permite controlar o acceso aos datos en función de claves e permite definir diferentes conxuntos de regras para acceder aos comandos coa posibilidade de vincular varios selectores (conxuntos de permisos) a cada usuario. Cada clave pódese identificar cunha autoridade específica, por exemplo, pode limitar o acceso a só ler ou escribir un determinado subconxunto de claves.
  • Ofrécese unha implementación particionada (partida) do paradigma de distribución de mensaxes Publicar-Subscribir que se executa nun clúster, na que se envía unha mensaxe a un nodo específico ao que se anexa unha canle de mensaxes, despois do cal esta mensaxe é redirixida aos nodos restantes incluídos. no caco. Os clientes poden recibir mensaxes subscribindose a unha canle, tanto conectándose ao nodo principal como aos secundarios da sección. O control realízase mediante os comandos SSUBSCRIBE, SUNSUBSCRIBE e SPUBLISH.
  • Engadido soporte para procesar subcomandos na maioría dos contextos.
  • Novos comandos engadidos:
    • ZMPOP, BZMPOP.
    • LMPOP, BLMPOP.
    • SINTERCARD, ZINTERCARD.
    • PUBLISH, SSUBSCRIBE, SUNSUBSCRIBE, PUBSUB SHARDCHHANNELS/SHARDNUMSUB.
    • TEMPO DE EXPIRACIÓN, TEMPO DE EXPIRACIÓN.
    • EVAL_RO, EVALSHA_RO, SORT_RO.
    • FUNCIÓN *, FCALL, FCALL_RO.
    • DOCUMENTOS DE COMANDO, LISTA DE COMANDO.
    • HISTÓGRAMA DE LATENCIA.
    • FRAGOS DE CLUSTER, VÍNCULOS DE CLUSTER, CLUSTER DELSLOTSRANGE, CLUSTER ADDSLOTSRANGE.
    • CLIENTE NON EXPECTADO.
    • ACL DRYRUN.
  • Proporcionouse a posibilidade de procesar varias configuracións á vez nunha chamada CONFIG SET/GET.
  • Engadíronse as opcións "-json", "-2", "-scan", "-functions-rdb" á utilidade redis-cli.
  • De forma predeterminada, o acceso do cliente á configuración e comandos que afectan á seguridade está desactivado (por exemplo, os comandos DEBUG e MODULE están desactivados, está prohibido cambiar configuracións coa marca PROTECTED_CONFIG). redis-cli xa non envía comandos que conteñan datos confidenciais a un ficheiro de historial.
  • Introduciuse unha gran parte das optimizacións destinadas a aumentar o rendemento e reducir o consumo de memoria. Por exemplo, o consumo de memoria reduciuse significativamente ao activar o modo clúster, ao realizar operacións de copia en escritura e ao traballar con hash e teclas zset. Mellora a lóxica para o lavado de datos no disco (chamada fsync). O número de paquetes de rede e chamadas ao sistema ao enviar respostas ao cliente reduciuse. Mellorouse a eficiencia da replicación.
  • Corrixiuse a vulnerabilidade CVE-2022-24735 no entorno para a execución de scripts Lua, o que lle permite substituír o seu propio código Lua e lograr a súa execución no contexto doutro usuario, incluído un con privilexios superiores.
  • Corrixiuse a vulnerabilidade CVE-2022-24736, que permitía que o proceso do servidor redis fallase debido á desreferencia do punteiro NULL. O ataque realízase mediante a carga de scripts Lua especialmente deseñados.

Fonte: opennet.ru

Engadir un comentario