Lançamento do SGBD Redis 7.0

Foi publicada a versão do SGBD Redis 7.0, que pertence à classe de sistemas NoSQL. O Redis fornece funções para armazenar dados de chave/valor, aprimoradas pelo suporte para formatos de dados estruturados, como listas, hashes e conjuntos, bem como a capacidade de executar manipuladores de script do lado do servidor em Lua. O código do projeto é fornecido sob a licença BSD. Módulos adicionais que oferecem recursos avançados para usuários corporativos, como RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, foram fornecidos sob uma licença RSAL proprietária desde 2019. O projeto GoodFORM, que recentemente estagnou, tentou continuar o desenvolvimento de versões abertas destes módulos sob a licença AGPLv3.

Ao contrário dos sistemas de armazenamento na memória, como o Memcached, o Redis garante que os dados sejam armazenados persistentemente no disco e que o banco de dados permaneça intacto em caso de falha. O código fonte do projeto é distribuído sob a licença BSD. Bibliotecas cliente estão disponíveis para as linguagens mais populares, incluindo Perl, Python, PHP, Java, Ruby e Tcl. Redis suporta transações, que permitem executar um grupo de comandos em uma única etapa, garantindo consistência e consistência (comandos de outras solicitações não podem interferir) na execução de um determinado conjunto de comandos, e em caso de problemas, permitindo reverter mudanças. Todos os dados são totalmente armazenados em cache na RAM.

Comandos como incremento/decremento, lista padrão e operações de conjunto (união, interseção), renomeação de teclas, seleções múltiplas e funções de classificação são fornecidos para gerenciamento de dados. Dois modos de armazenamento são suportados: sincronização periódica de dados em disco e manutenção de um log de alterações em disco. No segundo caso, é garantida a segurança total de todas as alterações. É possível organizar a replicação de dados mestre-escravo para vários servidores, realizada em modo não bloqueador. Também está disponível um modo de mensagens “publicar/assinar”, no qual é criado um canal, cujas mensagens são distribuídas aos clientes por assinatura.

Principais mudanças no Redis 7.0:

  • Adicionado suporte para funções do lado do servidor. Ao contrário dos scripts anteriormente suportados na linguagem Lua, as funções não estão vinculadas ao aplicativo e visam implementar lógica adicional que expanda as capacidades do servidor. As funções são processadas inextricavelmente com os dados e em relação ao banco de dados, e não à aplicação, inclusive sendo replicadas e armazenadas em armazenamento persistente.
  • Foi proposta uma segunda edição da ACL, que permite controlar o acesso aos dados com base em chaves e permite definir diferentes conjuntos de regras de acesso a comandos com a capacidade de vincular vários seletores (conjuntos de permissões) a cada usuário. Cada chave pode ser identificada com uma autoridade específica, por exemplo, você pode limitar o acesso apenas à leitura ou gravação de um determinado subconjunto de chaves.
  • É fornecida uma implementação particionada (fragmentada) do paradigma de distribuição de mensagens Publish-Subscribe em execução em um cluster, na qual uma mensagem é enviada para um nó específico ao qual um canal de mensagem está anexado, após o qual esta mensagem é redirecionada para os nós restantes incluídos no fragmento. Os clientes podem receber mensagens inscrevendo-se em um canal, tanto conectando-se ao nó principal quanto aos nós secundários da seção. O controle é realizado através dos comandos SSUBSCRIBE, SUNSUBSCRIBE e SPUBLISH.
  • Adicionado suporte para processamento de subcomandos na maioria dos contextos.
  • Novos comandos adicionados:
    • ZMPOP, BZMPOP.
    • LMPOP, BLMPOP.
    • SINTERCARD, ZINTERCARD.
    • PUBLICAR, SSUBSCRIBE, SUNSUBSCRIBE, PUBSUB SHARDCHANNELS/SHARDNUMSUB.
    • EXPIRETIME, PEXPIRETIME.
    • EVAL_RO, EVALSHA_RO, SORT_RO.
    • FUNÇÃO *, FCALL, FCALL_RO.
    • DOCUMENTOS DE COMANDO, LISTA DE COMANDOS.
    • HISTOGRAMA DE LATÊNCIA.
    • CLUSTER SHARDS, CLUSTER LINKS, CLUSTER DELSLOTSRANGE, CLUSTER ADDSLOTSRANGE.
    • CLIENTE NÃO-DESPEJADO.
    • ACL DRYRUN.
  • Foi fornecida a capacidade de processar múltiplas configurações de uma só vez em uma chamada CONFIG SET/GET.
  • As opções “-json”, “-2”, “-scan”, “-functions-rdb” foram adicionadas ao utilitário redis-cli.
  • Por padrão, o acesso do cliente às configurações e comandos que afetam a segurança está desabilitado (por exemplo, os comandos DEBUG e MODULE estão desabilitados, é proibido alterar configurações com o sinalizador PROTECTED_CONFIG). Redis-cli não envia mais comandos contendo dados confidenciais para um arquivo de histórico.
  • Uma grande parte das otimizações foi introduzida com o objetivo de aumentar o desempenho e reduzir o consumo de memória. Por exemplo, o consumo de memória foi reduzido significativamente ao ativar o modo cluster, ao executar operações de cópia na gravação e ao trabalhar com hashes e chaves zset. Lógica aprimorada para liberar dados para disco (chamada fsync). O número de pacotes de rede e chamadas de sistema ao enviar respostas ao cliente foi reduzido. A eficiência da replicação foi melhorada.
  • Foi corrigida a vulnerabilidade CVE-2022-24735 no ambiente de execução de scripts Lua, o que permite substituir seu próprio código Lua e conseguir sua execução no contexto de outro usuário, inclusive aquele com privilégios superiores.
  • Corrigida a vulnerabilidade CVE-2022-24736, que permite que o processo do servidor redis trave devido à desreferência do ponteiro NULL. O ataque é realizado através do carregamento de scripts Lua especialmente projetados.

Fonte: opennet.ru

Adicionar um comentário