lançamento do SGBD , que pertence à classe dos sistemas NoSQL. O Redis oferece funções semelhantes ao Memcached para armazenamento de dados no formato chave/valor, ampliadas pelo suporte a formatos de dados estruturados, como listas, hashes e conjuntos, além da possibilidade de executar scripts manipuladores em Lua no lado do servidor. O código do projeto é licenciado sob a licença BSD. Módulos adicionais, que oferecem recursos estendidos para usuários corporativos, como RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, desde o ano passado são oferecidos sob a licença proprietária RSAL. O desenvolvimento de versões abertas desses módulos sob a licença AGPLv3 é mantido pelo projeto .
Ao contrário do Memcached, o Redis garante o armazenamento persistente dos dados no disco e assegura a integridade do banco de dados em caso de encerramento inesperado. 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, permitindo a execução de um grupo de comandos em um único passo, garantindo consistência e coerência (os comandos de outras solicitações não podem ser intercalados) na execução de um determinado conjunto de comandos, permitindo reverter as alterações em caso de problemas. Todos os dados são totalmente armazenados em memória.
Para gerenciar dados, são fornecidos comandos como incrementar/decrementar, operações padrão em listas e conjuntos (união, interseção), renomear 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, a integridade de todas as alterações é garantida. É possível organizar a replicação master-slave de dados em vários servidores, realizada em modo não bloqueante. Também está disponível o modo de mensagens de 'publicação/inscrição', onde um canal é criado e as mensagens desse canal são distribuídas para os clientes inscritos.
Principais , adicionados no Redis 6.0:
- O novo protocolo RESP3 é proposto por padrão, mas a conexão começa em modo RESP2, e o cliente muda para o novo protocolo somente se a nova comando HELLO for utilizada durante a negociação da conexão. O RESP3 permite retornar diretamente tipos de dados complexos, sem a necessidade de conversão de arrays genéricos no lado do cliente e diferenciando os tipos retornados.
- Suporte a listas de controle de acesso (), permitindo definir com precisão quais operações podem ser executadas pelo cliente e quais não podem. As ACL também fornecem uma maneira de se proteger contra possíveis erros durante o desenvolvimento; por exemplo, um manipulador que executa apenas a operação BRPOPLPUSH pode ter a execução de outras operações proibidas, e se um chamado FLUSHALL acidentalmente esquecido durante a depuração estiver no código ativo, isso não causará problemas. A implementação das ACL não acarreta custos adicionais e praticamente não afeta o desempenho. Módulos de interface também foram preparados para as ACL, permitindo a criação de métodos de autenticação personalizados. Para visualizar todas as violações de ACL registradas, existe o comando "ACL LOG". Para geração de chaves de sessão imprevisíveis, foi adicionado o comando "ACL GENPASS", utilizando HMAC baseado em SHA256.
- Suporte para criptografar o canal de comunicação entre o cliente e o servidor.
- cache de dados no lado do cliente. Para sincronizar o cache no lado do cliente com o estado do banco de dados, existem dois modos disponíveis: 1. Lembrar no servidor das chaves que foram solicitadas anteriormente pelo cliente, a fim de informá-lo sobre a perda de relevância de uma entrada no cache do cliente. 2. O mecanismo de "broadcasting", onde o cliente se inscreve em determinados prefixos de chaves e o servidor o notifica caso ocorra uma alteração nas chaves que se enquadram nesses prefixos. A vantagem do modo de "broadcasting" é que não há um consumo adicional de memória no servidor para armazenar o mapeamento dos valores em cache no lado do cliente, e a desvantagem é o aumento no número de mensagens transmitidas.
- O broker de mensagens Disque, que permite usar Redis para processamento de filas de mensagens, foi separado do conjunto básico em .
- Adicionado , proxy para clusters de servidores Redis, permitindo que o cliente interaja com vários servidores Redis como se fosse uma única instância. O proxy pode roteirizar solicitações para os nós com os dados necessários, multiplexar conexões, reconfigurar o cluster em caso de falhas nos nós e executar solicitações que abrangem múltiplos nós.
- API significativamente melhorada para a escrita de módulos, essencialmente transformando o Redis em um framework que permite criar sistemas na forma de módulos complementares.
- Implementei um modo de replicação onde os arquivos RDB são imediatamente removidos após serem utilizados.
- Melhorado o protocolo de replicação PSYNC2, permitindo que a re-sincronização parcial ocorra com maior frequência, aumentando as chances de detectar deslocamentos comuns entre a réplica e o mestre.
- A carga de arquivos RDB foi acelerada. Dependendo da composição do arquivo, a aceleração varia de 20 a 30%. A execução do comando INFO também foi significativamente acelerada quando há um grande número de clientes conectados.
- Adicionada uma nova comando STRALGO com a implementação de algoritmos complexos para processamento de strings. Atualmente, apenas um algoritmo LCS (longest common subsequence) está disponível, que pode ser útil ao comparar sequências de RNA e DNA.
Fonte: opennet.ru
