Foi lançado o Redis 7.4, um sistema de banco de dados NoSQL. O Redis oferece funcionalidades para armazenar dados no formato chave/valor, com suporte expandido para formatos de dados estruturados, como listas, hashes e conjuntos, além da capacidade de executar scripts manipuladores no lado do servidor em Lua. Ao contrário dos sistemas de armazenamento em memória, como o Memcached, o Redis armazena os dados não apenas na memória, mas também no disco, garantindo a preservação do banco de dados em caso de falhas.
O Redis 7.4 é anunciado como a primeira versão distribuída sob novas condições de licenciamento — ao invés da licença BSD anteriormente utilizada, o código agora está disponível sob as licenças proprietárias RSALv2 (Redis Source Available License v2) e SSPLv1 (Server Side Public License v1). Aqueles que desejam continuar usando o código sob a licença BSD podem recorrer a projetos como Valkey (um fork desenvolvido com a participação da Amazon, Google, Oracle, Ericsson e Snap), Redict (um fork do autor da shell Sway e da linguagem Hare), Garnet (um banco de dados da Microsoft compatível com Redis) ou KeyDB (um fork de alto desempenho do Redis 5 criado pelo Snapchat).
As licenças SSPL e RSAL levam à discriminação de categorias específicas de usuários, o que não permite considerá-las abertas ou livres. Por seus objetivos, ambas as licenças se assemelham, com a diferença sendo que a licença SSPL é baseada na licença copyleft AGPLv3 e a licença RSAL é baseada na licença permissiva BSD. A licença RSAL permite o uso, modificação, distribuição e integração do código em aplicativos, exceto quando esses aplicativos são comerciais ou são utilizados para fornecer serviços gerenciados pagos. A licença SSPL inclui ainda um requisito de entrega sob a mesma licença não apenas do código do próprio aplicativo, mas também dos códigos-fonte de todos os componentes envolvidos na prestação de serviços em nuvem.
O Redis suporta transações que permitem executar um grupo de comandos em um único passo, garantindo a consistência e a sequência (comandos de outras requisições não podem interferir) na execução do conjunto de comandos especificado, e em caso de problemas, permitindo reverter as mudanças. Todos os dados são totalmente armazenados em memória. Bibliotecas de cliente estão disponíveis para a maioria das linguagens populares, incluindo Perl, Python, PHP, Java, Ruby e Tcl.
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.
Principais mudanças na funcionalidade do Redis 7.4:
- Foi adicionada a capacidade de limitar o tempo de vida de campos individuais em hashes, estruturas para armazenar coleções agrupadas de registros no formato chave-valor. Ao contrário da definição de tempo de vida para a chave, a alteração proposta permite não apenas definir um tempo de vida total para todos os campos relacionados, mas também valores de tempo de vida individuais para campos específicos, o que pode ser utilizado, por exemplo, para garantir um ciclo de vida mais curto para tokens de autenticação, em comparação com outros dados de sessão.
- Novos tipos de dados bfloat16 e float16 foram propostos, otimizados para uso em aplicações de aprendizado de máquina e permitindo a redução do consumo de memória em comparação com os tipos float32 e float64 disponíveis anteriormente. Ao serem utilizados em hashes, os novos tipos possibilitam uma redução de 47% no consumo de memória em bancos de dados vetoriais, diminuem a latência de extração de dados em 59% e reduzem o tempo de criação de índices em 58% em comparação com o tipo float64.
- O uso de índices secundários foi simplificado. Ao consultar informações de índices secundários, agora não é necessário escapar caracteres especiais, como "@" e ".", podendo-se usar aspas duplas para delimitar uma porção de dados. O indexação de campos vazios e ausentes também foi significativamente aprimorada - para a criação de índices e formação de consultas que levam em consideração a presença de campos, foram introduzidas novas palavras-chave INDEXMISSING e a função ismissing(). Novos operadores INTERSECT e DISJOINT foram adicionados para simplificar a busca de dados geoespaciais. Foram implementadas novas capacidades para analisar o consumo de memória do índice.
- Foi adicionada a compatibilidade com filtros para excluir elementos em conjuntos de dados adicionados, por exemplo, ao carregar periodicamente dados de sensores em um banco de dados, pode-se adicionar um filtro para ignorar valores cuja diferença de tempo em relação ao valor anterior seja menor que um determinado limiar.
- O suporte a gatilhos e funções em JavaScript propostos na versão anterior foi encerrado.
Fonte: opennet.ru
