Lançamento do SGBD Redis 7.0

Foi lançado o Redis 7.0, um sistema de gerenciamento de banco de dados do tipo NoSQL. O Redis oferece funcionalidades para armazenar dados no formato chave/valor, com suporte adicional para formatos de dados estruturados, como listas, hashes e conjuntos, além da possibilidade de executar scripts de manipuladores em lua no lado do servidor. O código do projeto é distribuído sob a licença BSD. Módulos adicionais que oferecem recursos avançados para usuários corporativos, como RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, são fornecidos desde 2019 sob a licença proprietária RSAL. O desenvolvimento de versões abertas desses módulos sob a licença AGPLv3 foi tentado pelo projeto GoodFORM, que recentemente está em estagnação.

Ao contrário dos sistemas de armazenamento em memória, como o Memcached, o Redis garante o armazenamento persistente de dados no disco e a integridade do banco de dados em caso de falhas. Os códigos fonte do projeto são distribuídos sob a licença BSD. Bibliotecas clientes estão disponíveis para a maioria das linguagens populares, incluindo Perl, Python, PHP, Java, Ruby e Tcl. O Redis suporta transações que permitem executar um conjunto de comandos em uma única etapa, garantindo a consistência e a sequência (comandos de outras requisições não podem interferir) na execução do conjunto de comandos designado, e em caso de problemas permite reverter as alterações. Todos os dados são totalmente armazenados em memória.

Para o gerenciamento de dados, são fornecidos comandos como incremento/decremento, operações padrão em listas e conjuntos (união, interseção), renomeação de chaves, seleções múltiplas e funções de ordenação. Dois modos de armazenamento são suportados: sincronização periódica de dados no disco e manutenção de um log de alterações no disco. No segundo caso, é garantida a preservação completa de todas as alterações. É possível organizar replicação de dados master-slave em vários servidores, realizada em modo não bloqueante. Também está disponível o modo de troca de mensagens 'publicação/inscrição', onde um canal é criado e mensagens desse canal são distribuídas para clientes que se inscrevem.

Mudanças principais no Redis 7.0:

  • Suporte adicionado para funções executadas no lado servidor. Ao contrário dos scripts anteriormente suportados na linguagem Lua, as funções não estão ligadas ao aplicativo e visam implementar lógica adicional que expande as capacidades do servidor. As funções são processadas de maneira integrada com os dados e em relação ao banco de dados, e não ao aplicativo, incluindo replicação e armazenamento em armazenamento permanente.
  • Foi proposta uma segunda edição do ACL, que permite gerenciar o acesso a dados com base em chaves e admite a definição de diferentes conjuntos de regras de acesso a comandos com a possibilidade de vincular vários seletores (conjuntos de permissões) a cada usuário. Cada chave pode ser associada a certas permissões, por exemplo, é possível restringir o acesso apenas para leitura ou gravação de um subconjunto específico de chaves.
  • Foi fornecida uma implementação sequencial (sharded) que funciona em cluster do paradigma de publicação por assinatura (Publish-Subscribe), onde uma mensagem é enviada a um nó específico ao qual o canal de mensagens está vinculado, e depois essa mensagem é redirecionada para os outros nós que pertencem à seção (shard). Os clientes podem receber mensagens assinando o canal, tanto conectando-se ao nó principal quanto aos nós secundários da seção. O controle é feito através dos comandos SSUBSCRIBE, SUNSUBSCRIBE e SPUBLISH.
  • Adicionada a capacidade de manipulação de subcomandos na maioria dos contextos.
  • Novos comandos foram adicionados:
    • ZMPOP, BZMPOP.
    • LMPOP, BLMPOP.
    • SINTERCARD, ZINTERCARD.
    • SPUBLISH, SSUBSCRIBE, SUNSUBSCRIBE, PUBSUB SHARDCHANNELS/SHARDNUMSUB.
    • EXPIRETIME, PEXPIRETIME.
    • EVAL_RO, EVALSHA_RO, SORT_RO.
    • FUNCTION *, FCALL, FCALL_RO.
    • COMMAND DOCS, COMMAND LIST.
    • LATENCY HISTOGRAM.
    • CLUSTER SHARDS, CLUSTER LINKS, CLUSTER DELSLOTSRANGE, CLUSTER ADDSLOTSRANGE.
    • CLIENT NO-EVICT.
    • ACL DRYRUN.
  • Foi fornecida a possibilidade de processar várias configurações em uma única chamada CONFIG SET/GET.
  • As opções ‘—json’, ‘-2’, ‘—scan’, ‘—functions-rdb’ foram adicionadas ao utilitário redis-cli.
  • Por padrão, o acesso dos clientes às configurações e comandos que afetam a segurança está desativado (por exemplo, os comandos DEBUG e MODULE estão desabilitados, e as alterações nas configurações com a flag PROTECTED_CONFIG são proibidas). A saída para o arquivo de histórico de comandos que contém dados confidenciais foi descontinuada no redis-cli.
  • Foi realizada uma grande quantidade de otimizações voltadas para aumentar a performance e reduzir o consumo de memória. Por exemplo, o consumo de memória foi significativamente reduzido ao ativar o modo de cluster, ao executar operações de copy-on-write e ao trabalhar com hashes e chaves zset. A lógica de gravação de dados no disco (chamada de fsync) foi aprimorada. 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 aumentada.
  • A vulnerabilidade CVE-2022-24735 no ambiente de execução de scripts Lua foi corrigida, permitindo a substituição do próprio código Lua e a execução do mesmo no contexto de outro usuário, incluindo aqueles com privilégios mais altos.
  • A vulnerabilidade CVE-2022-24736 foi corrigida, que permitia a finalização abrupta do processo redis-server devido à desreferenciação de um ponteiro nulo. O ataque era realizado através do carregamento de scripts Lua especialmente formatados.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster