Foi lançado o Redis 8.2, um sistema de gerenciamento de banco de dados NoSQL. O Redis oferece funcionalidades para armazenamento de dados no formato chave/valor, com suporte avançado a formatos de dados estruturados, como listas, hashes e conjuntos, além da capacidade de executar scripts de manipuladores em Lua no lado do servidor. O código do projeto é escrito em C e é distribuído sob a licença AGPLv3.
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 no Redis 8.2:
- Mais de 70 comandos foram otimizados, tornando-se mais rápidos do que no Redis 8.0. Por exemplo, o comando BITCOUNT ficou 35% mais rápido, e os comandos para operações com listas LINSERT, LREM e LPOS ficaram 25% mais rápidos. 17 dos comandos otimizados aumentaram a velocidade em pelo menos 5%, e 52 em pelo menos 2%.

- Foram realizadas otimizações no código para processamento de operações concorrentes e entrada/saída multithread, permitindo um aumento de 49% no número de operações processadas por segundo em testes com 8 threads de entrada/saída, com uma distribuição de carga de 20% para requisições de gravação e 80% para leitura. Em um servidor conseguiu-se ultrapassar a marca de 1 milhão de operações processadas por segundo.

- O método de armazenamento de dados no formato chave/valor foi fundamentalmente alterado — agora é utilizada uma estrutura unificada chamada kvobj, que permite agrupar o nome da chave, um valor curto e o tempo de vida em um único bloco de memória alocada, evitando a necessidade de referências separadas para chaves, dados e TTL nas tabelas hash. Ao armazenar valores de strings curtas, esse novo método reduziu o consumo de memória em 25-37%.

- A otimização do armazenamento de dados no formato JSON levou a uma redução de 25-67% no consumo de memória ao armazenar números inteiros e números de ponto flutuante.
- No mecanismo Streams, utilizado para processar e armazenar fluxos de mensagens, foram adicionados novos comandos XACKDEL e XDELEX, simplificando o trabalho com fluxos conectados a vários receptores (grupos de consumidores). Os comandos resolvem a questão de remover uma mensagem somente após sua recepção ser confirmada por todos os processadores.
- Na equipe BITOP, destinada à execução de operações de bits, foram adicionados novos operadores lógicos DIFF, DIFF1, ANDOR e ONE.
- Foi adicionado um novo tipo de índices de vetores SVS-VAMANA, que suporta a compressão de vetores.
- Novas métricas foram adicionadas: carga em relação a slots individuais e a distribuição de tamanhos de chaves para tipos de dados básicos.
Fonte: opennet.ru



