O projeto Redis voltou a usar uma licença aberta. O Redis 8.0 foi lançado

A empresa Redis Ltd anunciou uma mudança em sua política de licenciamento do projeto. A partir do lançamento do Redis 8.0, o código do projeto passou a estar disponível sob a licença livre AGPLv3. A transição para uma licença aberta foi possível devido ao retorno à empresa de Salvatore Sanfilippo, o criador do SGBD Redis. Após sua saída da Redis Ltd, Salvatore desenvolveu um conjunto de extensões vetoriais (Vector Sets), que estava pronto para ser incluído no Redis, mas desejava que seu código fosse fornecido sob uma licença aberta. Salvatore conseguiu convencer seus colegas da importância de restaurar a natureza aberta do projeto e melhorar a interação com a comunidade.

Rowan Trollope, diretor da Redis Ltd, afirmou que a transição realizada no ano passado para licenças proprietárias atingiu seu objetivo, já que as empresas AWS e Google fundaram um fork, começaram a participar do desenvolvimento conjunto e compartilhar suas experiências anteriores. Entretanto, a mudança de licenças prejudicou as relações com a comunidade, que agora a empresa tentará restaurar ao voltar a fornecer código sob uma licença livre.

Após a transição para licenças proprietárias, o desenvolvimento da base de código aberto do Redis continuou em forks como Valkey (um fork desenvolvido com a participação da Amazon, Google, Oracle, Ericsson e Snap), Redict (um fork do autor da interface de usuário Sway e da linguagem Hare), Garnet (SGBD da Microsoft compatível com Redis) e KeyDB (um fork de alto desempenho do Redis 5 da Snapchat). Nos repositórios das distribuições Debian 13, Ubuntu 24.10, Fedora 41, RHEL 10, Azure Linux 3, Arch Linux e Alpine 3.20, o pacote Redis foi substituído pelo fork Valkey.

Originalmente, o Redis era fornecido sob a licença permissiva BSD, que permitia não divulgar suas alterações, e depois passou para licenças proprietárias RSALv2 (Redis Source Available License v2) e SSPLv1 (Server Side Public License v1). A partir do Redis 8, o código do projeto está disponível sob a licença AGPLv3, cuja característica é a inclusão de restrições para aplicativos que proporcionam o funcionamento de serviços de rede. Ao usar componentes AGPL em serviços de rede, o desenvolvedor é obrigado a fornecer ao usuário o código-fonte de todas as alterações feitas nesses componentes, mesmo que o software subjacente ao serviço não seja distribuído e seja usado exclusivamente na infraestrutura interna para organizar o funcionamento do serviço. A licença AGPLv3 é compatível com a GPLv3, mas conflita com a licença GPLv2.

As licenças SSPL e RSAL utilizadas anteriormente levavam à discriminação de determinadas categorias de usuários, o que não permitia considerá-las abertas ou livres. Em seus objetivos, ambas as licenças são semelhantes, com a diferença de que a licença SSPL é baseada na licença copyleft AGPLv3, enquanto a licença RSAL é baseada na licença permissiva BSD. A licença RSAL permite usar, modificar, distribuir e integrar o código em aplicativos, exceto quando esses aplicativos são comerciais ou utilizados para fornecer serviços gerenciados pagos. Além disso, a licença SSPL inclui o requisito de fornecer, sob a mesma licença, não apenas o código do próprio aplicativo, mas também os códigos-fonte de todos os componentes envolvidos na prestação do serviço em nuvem.

Simultaneamente ao anúncio da mudança de licença, foi lançado o Redis 8.0. No entanto, apesar do anúncio sobre a disponibilidade do lançamento, no repositório ainda está disponível apenas um candidato a lançamento, e o link para download do Redis 8.0 no site do projeto leva a uma página com uma descrição geral do processo de instalação. No aviso do lançamento, também está apenas registrado o lançamento 8.0-RC1.

Principais alterações no Redis 8.0:

  • Foi adicionado um tipo para armazenamento de conjuntos de dados vetoriais, requisitados em sistemas de aprendizado de máquina e busca semântica. Os conjuntos vetoriais (vector set) expandem a funcionalidade anteriormente disponível dos conjuntos ordenados (sorted set) com a capacidade de armazenar vetores multidimensionais. Para manipulação de dados vetoriais, 11 novos comandos foram adicionados, como VADD, VREM e VSIM.
  • Os módulos Redis Query Engine, JSON, Time Series e Probabilistic Data Types foram incorporados ao núcleo do Redis, anteriormente fornecidos como extensões separadas do Redis Stack.
  • Foi integrada a suporte à estrutura de dados JSON, permitindo armazenar documentos no formato JSON vinculados a chaves no Redis. Para extração seletiva de documentos JSON e acesso a elementos individuais, pode ser adotada a linguagem de consultas JSONPath. Há suporte para atualização atômica, permitindo modificar campos específicos de um documento JSON sem a necessidade de carregar todo o documento.
  • Foi adicionada a suporte à estrutura de dados na forma de séries temporais (onde um registro é composto por um tempo e um conjunto de valores correspondentes a esse tempo, por exemplo, obtidos através de supervisão periódica do estado de sensores ou coleta de métricas). Para reduzir o consumo de memória, foram utilizados algoritmos de compressão para tais dados e foi fornecida a possibilidade de definir regras de redução de dados arquivados (downsampling).
  • Estruturas de dados probabilísticas foram adicionadas: Bloom filter, Cuckoo filter, Count-min sketch, Top-k e t-digest, permitindo reduzir significativamente o tamanho do armazenamento ao armazenar volumes de dados muito grandes, com precisão reduzida em algumas operações. "Bloom filter" e "Cuckoo filter" permitem verificar a inclusão em um conjunto, admitindo a possibilidade de definir erroneamente a ausência de um elemento, mas excluindo a omissão de um elemento existente. "Count-min sketch" prevê o número de menções de um valor em um conjunto. "Top-k" permite encontrar os valores mais frequentes. "T-digest" oferece a capacidade de amostrar valores maiores ou menores que um dado.
  • Incluído no conjunto está o motor "Redis Query Engine" com suporte para busca vetorial e capacidades para formar amostras com base no conteúdo, em vez de chaves. O Redis Query Engine permite criar índices adicionais para dados armazenados em hashes e documentos JSON.
  • O suporte para ACL (Listas de Controle de Acesso) foi ampliado, permitindo gerenciar o acesso a dados com base em chaves e possibilitando a definição de diferentes conjuntos de regras de acesso para comandos, com a opção de vincular conjuntos de permissões a cada usuário. Por exemplo, através de ACL é possível definir quais usuários podem se conectar ao Redis, quais chaves um usuário pode acessar e quais comandos ele pode executar. O Redis 8 adicionou novas categorias de ACL para novas estruturas de dados.
  • Novos comandos foram adicionados para trabalhar com hashes:
    • HGETDEL — retorna e remove campos de hash com base na chave especificada.
    • HGETEX — retorna campos de hash com base na chave especificada e define um tempo de vida para eles.
    • HSETEX — define campos de hash com base na chave especificada e define um tempo de vida para eles.
  • Mais de 30 otimizações de desempenho foram implementadas, resultando em uma aceleração da execução de comandos em até 87%, aumento de capacidade de processamento em 112%, aceleração de replicação em 18% e aceleração de consulta no Redis Query Engine de até 16 vezes (graças à escalabilidade horizontal e vertical). Durante um conjunto de 149 testes, 90 comandos mostraram execução mais rápida. A capacidade de processamento aumentou significativamente, devido à migração para operações em múltiplas threads nos componentes de análise de comandos, processamento de solicitações de clientes, leitura e gravação em sockets de rede. Uma nova implementação do mecanismo de processamento de entrada/saída em múltiplas threads (io-threads) foi proposta.
  • Um novo mecanismo de replicação foi apresentado, consumindo 35% menos memória e operando 18% mais rápido. Para evitar bloqueios, foram utilizados dois threads de replicação separados — um para transmitir alterações ao nó principal e outro para transmitir alterações aos nós intermediários.

Para gerenciar os dados no SGBD Redis, 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 em disco e manutenção de um log de alterações no disco. No segundo caso, é garantida a completa preservação de todas as alterações. Transações são suportadas, permitindo a execução de um grupo de comandos em um único passo, garantindo a consistência e a sequência da execução (comandos de outras solicitações não podem interferir) do conjunto de comandos especificado, e em caso de problemas, permitindo reverter as alterações.

É possível organizar a replicação de dados master-slave para vários servidores, realizada em modo não bloqueante. Também está disponível o modo de troca de mensagens "publicação/assinatura", no qual um canal é criado, cujas mensagens são enviadas aos clientes por meio de assinaturas. Todos os dados são completamente armazenados em memória. Bibliotecas cliente estão disponíveis para a maioria das linguagens populares, incluindo Perl, Python, PHP, Java, Ruby, Tcl, JavaScript/Node.js, Go e C#.

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