versão do SGBD Redis é um sistema NoSQL. Ele oferece funcionalidades semelhantes ao Memcached para armazenar dados chave/valor, aprimoradas com suporte a formatos de dados estruturados, como listas, hashes e conjuntos, além da capacidade de executar scripts de tratamento de dados no servidor em Lua. Código do projeto Licenciado sob a licença BSD. Módulos adicionais que oferecem recursos avançados para usuários corporativos, como RediSearch, RedisGraph, RedisJSON, RedisML e RedisBloom, estão disponíveis desde o ano passado. sob a licença proprietária RSAL. O desenvolvimento de versões de código aberto desses módulos sob a licença AGPLv3 continua sendo realizado pelo projeto. .
Diferentemente do Memcached, o Redis armazena dados persistentemente em disco e garante a integridade do banco de dados em caso de falha. O código-fonte do projeto é distribuído sob a licença BSD. Bibliotecas de cliente 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 a execução de um grupo de comandos em uma única etapa, garantindo consistência e execução sequencial (comandos de outras requisições não podem interferir) de um determinado conjunto de comandos, além de permitir o reversão das alterações em caso de problema. Todos os dados são totalmente armazenados em cache na RAM.
Comandos como incremento/decremento, lista padrão e operações de conjunto (união, interseção), renomeação de teclas, seleções múltiplas e funções de classificação são fornecidos para gerenciamento de dados. Dois modos de armazenamento são suportados: sincronização periódica de dados em disco e manutenção de um log de alterações em disco. No segundo caso, é garantida a segurança total de todas as alterações. É possível organizar a replicação de dados mestre-escravo para vários servidores, realizada em modo não bloqueador. Também está disponível um modo de mensagens “publicar/assinar”, no qual é criado um canal, cujas mensagens são distribuídas aos clientes por assinatura.
Chave , adicionado no Redis 6.0:
- Por padrão, o novo protocolo RESP3 é oferecido, mas o estabelecimento da conexão começa no modo RESP2, e o cliente alterna para o novo protocolo somente se o novo comando HELLO for usado durante a negociação da conexão. O RESP3 permite o retorno direto de tipos de dados complexos sem a necessidade de converter arrays compartilhados no lado do cliente e separar os tipos de retorno.
- Suporte para listas de controle de acesso (As ACLs permitem definir com precisão quais operações um cliente pode ou não executar. Elas também oferecem a capacidade de proteger contra possíveis erros de desenvolvimento. Por exemplo, um manipulador que executa apenas a operação BRPOPLPUSH pode ser proibido de executar outras operações. Se uma chamada FLUSHALL adicionada durante a depuração for acidentalmente esquecida no código de produção, isso não causará problemas. A implementação de ACLs não envolve nenhuma sobrecarga adicional e praticamente não tem impacto no desempenho. Módulos de interface também foram desenvolvidos para ACLs, permitindo a criação de métodos de autenticação personalizados. O comando "ACL LOG" está disponível para visualizar todas as violações de ACL registradas. O comando "ACL GENPASS", que usa HMAC baseado em SHA256, foi adicionado para gerar chaves de sessão imprevisíveis.
- Suporte Criptografar o canal de comunicação entre o cliente e o servidor.
- Cache de dados no lado do cliente. Dois modos estão disponíveis para garantir a consistência entre o cache do lado do cliente e o banco de dados: 1. Armazenar no servidor as chaves previamente solicitadas pelo cliente para notificá-lo quando um registro no cache do cliente não for mais válido. 2. Um mecanismo de "difusão", no qual o cliente se inscreve em prefixos de chave específicos e o servidor o notifica quando as chaves correspondentes a esses prefixos mudam. A vantagem do modo de "difusão" é que o servidor não consome memória adicional para armazenar um mapa de valores em cache no lado do cliente, mas a desvantagem é o aumento do número de mensagens transmitidas.
- O broker de mensagens Disque, que permite usar o Redis para processar filas de mensagens, foi removido do pacote principal. .
- Adicionado , um proxy para um cluster de servidores Redis, permite que um cliente gerencie vários servidores Redis como se fossem uma única instância. O proxy pode rotear solicitações para os nós com os dados necessários, multiplexar conexões, reconfigurar o cluster em caso de falhas de nós e executar solicitações em vários nós.
- A API para escrever módulos foi significativamente aprimorada, transformando o Redis essencialmente em um framework que permite criar sistemas na forma de módulos complementares.
- Foi implementado um modo de replicação no qual os arquivos RDB são excluídos imediatamente após serem utilizados.
- O protocolo de replicação PSYNC2 foi aprimorado para permitir uma ressincronização parcial mais frequente, aumentando as chances de detecção de um desvio comum entre uma réplica e o servidor mestre.
- O carregamento de arquivos RDB foi acelerado. Dependendo do conteúdo do arquivo, o aumento de velocidade varia de 20 a 30%. A execução do comando INFO foi significativamente acelerada quando há um grande número de clientes conectados.
- Um novo comando, STRALGO, foi adicionado, implementando algoritmos complexos de processamento de strings. Atualmente, apenas um algoritmo, LCS (subsequência comum mais longa), está disponível, o qual pode ser útil para comparar sequências de RNA e DNA.
Fonte: opennet.ru
