Traduzido do inglês

O Redis é um banco de dados chave-valor em memória usado como cache distribuído e message broker, com durabilidade opcional. Ele oferece leituras e gravações de baixa latência, tornando-o adequado para caching e aplicações em tempo real.

Redis (Remote Dictionary Server) é um banco de dados chave-valor em memória, usado como cache distribuído e message broker, com durabilidade opcional. Por manter todos os dados em memória e devido ao seu design, o Redis oferece leituras e gravações de baixa latência, tornando-o particularmente adequado para casos de uso que exigem cache. O projeto foi desenvolvido e mantido por Salvatore Sanfilippo, a partir de 2009, e evoluiu por meio de múltiplos patrocínios e mudanças de licenciamento para se tornar um componente amplamente adotado de infraestrutura de dados.

O Redis funciona tanto como armazenamento de dados quanto como cache, distinguindo-se dos sistemas tradicionais de gerenciamento de banco de dados relacional (RDBMS). Seu modelo de dados é baseado em tipos de dados abstratos, em vez de consultas SQL, e é otimizado para recuperação direta, sem índices secundários ou agregações. Esse design, combinado com sua operação em memória, permite tempos de resposta de submilissegundo para muitas cargas de trabalho.

História

O projeto Redis começou quando Salvatore Sanfilippo (apelidado de antirez) tentava melhorar a escalabilidade de sua startup italiana e desenvolveu um analisador de logs web em tempo real. Após encontrar problemas significativos ao escalar alguns tipos de cargas de trabalho usando sistemas de banco de dados tradicionais, Sanfilippo começou em 2009 a prototipar uma primeira versão de prova de conceito do Redis em Tcl. Posteriormente, Sanfilippo traduziu esse protótipo para a linguagem C e implementou o primeiro tipo de dados, a lista. Após algumas semanas usando o projeto internamente com sucesso, Sanfilippo decidiu torná-lo de código aberto, anunciando o projeto no Hacker News. O projeto começou a ganhar tração, particularmente entre a comunidade Ruby, com GitHub e Instagram sendo algumas das primeiras empresas a adotá-lo.

Sanfilippo foi contratado pela VMware em março de 2010. Em maio de 2013, o Redis foi patrocinado pela Pivotal Software (uma spin-off da VMware). Em junho de 2015, o desenvolvimento passou a ser patrocinado pela Redis Ltd. Em outubro de 2018, o Redis 5.0 foi lançado, introduzindo o Redis Stream, uma nova estrutura de dados que permite o armazenamento de múltiplos campos e valores de string com uma sequência automática baseada em tempo em uma única chave. Em junho de 2020, Sanfilippo deixou o cargo de mantenedor único do Redis, sucedido por Yossi Gottlieb e Oran Agra. Sanfilippo retornou ao Redis em dezembro de 2024.

Evolução do Licenciamento

Em agosto de 2018, para controlar o uso do software por provedores de nuvem gerenciados sem compensação adequada, a Redis Ltd. anunciou que relicenciaria os módulos opcionais do Redis da GNU Affero General Public License (AGPL) para a Apache License, mas sujeitos a um adendo conhecido como "Commons Clause" que restringe o uso comercial. Isso tornou os módulos de código-fonte disponível e não mais software livre. O software principal do Redis permaneceu sob uma licença BSD, com a Redis Ltd. se comprometendo a manter esses termos.

Em fevereiro de 2019, citando confusão sobre os termos de licenciamento, a Apache License com os termos da Commons Clause para os módulos do Redis foi substituída pela "Redis Source Available License" (RSAL), que proíbe explicitamente o uso comercial dos módulos como parte de "um banco de dados, um mecanismo de cache, um mecanismo de processamento de fluxo, um mecanismo de busca, um mecanismo de indexação ou um mecanismo de serviço de ML/DL/AI". A última revisão dos módulos sob uma licença livre e de código aberto foi bifurcada por membros da comunidade como o projeto GoodFORM.

Em março de 2024, a Redis Ltd. anunciou que, a partir da versão 7.4, o software principal do Redis seria relicenciado sob a RSAL e a Server Side Public License (SSPL), ambas de código-fonte disponível e não livres. A Linux Foundation anunciou posteriormente que bifurcaria a última versão do Redis licenciada sob BSD como Valkey. Em maio de 2025, a Redis Ltd. anunciou que mudaria a licença novamente para a AGPL a partir da versão 8.0, citando que as bifurcações haviam alcançado seu objetivo de criar um "campo de jogo nivelado" de produtos diferenciados, e que o Redis alcançou "crescimento recorde" desde a mudança de licença.

Modelo de Dados e Tipos

O Redis mapeia chaves para tipos de valores. O Redis suporta vários tipos de dados, incluindo Strings, documentos JavaScript Object Notation (JSON), Hashes (uma coleção de campos, cada campo é um par nome-valor de string), listas, conjuntos, conjuntos vetoriais e mais. Essa variedade permite que desenvolvedores modelem diversos cenários de aplicação diretamente no Redis, desde buscas simples de chave-valor até estruturas de dados complexas, como conjuntos ordenados para rankings ou índices geoespaciais.

O Redis Query Engine permite que usuários usem o Redis como um banco de dados de documentos, um banco de dados vetorial, um índice secundário e um mecanismo de busca. Com o Redis Query Engine, usuários podem definir índices para documentos hash e JSON, e usar uma linguagem de consulta rica para busca vetorial, busca de texto completo, consultas geoespaciais e agregações. Isso estende o Redis além de um simples cache para uma plataforma de dados multimodelo, suportando aplicações modernas que exigem capacidades de consulta flexíveis.

Mensageria e Transações

O Redis Pub/Sub (abreviação de publish/subscribe) é uma capacidade de mensageria leve. Publicadores enviam mensagens para um canal, e assinantes recebem mensagens desse canal. Esse padrão é comumente usado para notificações em tempo real, sistemas de chat e arquiteturas orientadas a eventos, onde componentes desacoplados precisam se comunicar de forma assíncrona.

Uma transação Redis permite a execução de um grupo de comandos em uma única etapa. Uma solicitação enviada por outro cliente nunca será atendida durante a execução de uma transação. Isso garante que os comandos sejam executados como uma operação isolada única. As transações Redis são baseadas em um modelo de enfileirar e executar, onde os comandos são enfileirados e depois executados sequencialmente sem interrupção, garantindo atomicidade para o lote.

Usuários do Redis também podem enviar e executar scripts Lua no servidor. Esse recurso permite que operações complexas sejam executadas atomicamente no lado do servidor, reduzindo viagens de ida e volta na rede e garantindo consistência. A scriptagem Lua é particularmente útil para implementar lógica de negócios personalizada que deve ser executada próxima aos dados.

Persistência e Durabilidade

O Redis normalmente mantém todo o conjunto de dados em memória. Versões até 2.4 podiam ser configuradas para usar o que chamavam de memória virtual, na qual parte do conjunto de dados é armazenada em disco, mas esse recurso está obsoleto. A persistência no Redis pode ser alcançada por dois métodos diferentes: snapshot, onde o conjunto de dados é transferido assincronamente da memória para o disco em intervalos regulares como um despejo binário, usando o Formato de Arquivo de Despejo RDB do Redis; ou journaling, onde um registro de cada operação que modifica o conjunto de dados é adicionado a um arquivo de append-only (AOF) em um processo em segundo plano. O Redis pode reescrever o arquivo de append-only em segundo plano para compactá-lo e reduzir o tempo de recuperação.

A implementação do Redis usa a chamada de sistema fork para duplicar o processo que contém os dados. Isso permite que o processo pai continue atendendo clientes enquanto o processo filho persiste os dados em memória no disco. Esse design minimiza o tempo de inatividade durante operações de persistência e é um fator-chave na capacidade do Redis de manter alta disponibilidade enquanto garante a durabilidade dos dados.

Diferenças de Outros Sistemas de Banco de Dados

O Redis é um sistema que funciona tanto como armazenamento de dados quanto como cache. Os dados são modificados e lidos da memória principal do computador, enquanto também são persistidos em disco em um formato otimizado para acesso sequencial, em vez de acesso aleatório. Os dados formatados são apenas reconstruídos em memória quando o sistema reinicia. Essa abordagem contrasta com bancos de dados tradicionais que dependem principalmente de armazenamento baseado em disco e padrões de acesso aleatório.

O Redis usa um modelo de dados que difere do sistema de gerenciamento de banco de dados relacional (RDBMS). Comandos especificam operações em tipos de dados abstratos, em vez de consultas a serem executadas por um mecanismo de banco de dados. Os dados são armazenados em estruturas projetadas para recuperação direta. Ele não depende de índices secundários, agregações ou outros recursos comuns em RDBMS tradicionais. Essa simplicidade e foco na operação em memória tornam o Redis excepcionalmente rápido para padrões de acesso específicos, mas também significa que consultas analíticas complexas são mais adequadas a outros sistemas.

Uso Moderno e Ecossistema

Em 1º de maio de 2025, para todas as versões do Redis a partir da 8.0, todos os tipos de dados estão incluídos no mesmo pacote e disponíveis sob a Redis Source Available License v2. Anteriormente, alguns tipos de dados eram separados e, portanto, disponíveis sob licenças diferentes. Essa consolidação simplifica a implantação e o licenciamento para usuários, tornando o Redis uma plataforma mais coesa.

O Redis se tornou um componente fundamental em muitas pilhas de tecnologia, frequentemente usado junto com provedores de nuvem e principais plataformas de nuvem para cache, gerenciamento de sessão e análise em tempo real. Suas características de baixa latência também o tornam adequado para aplicações de IA e aprendizado de máquina que exigem acesso rápido a dados para servir modelos ou armazenamentos de recursos. O suporte do Redis Query Engine para busca vetorial está alinhado com a crescente demanda por aplicações de IA generativa e grandes modelos de linguagem que dependem de busca por similaridade sobre embeddings.

Ver Também

Text is available under the Creative Commons Attribution-ShareAlike 4.0 license. Attribution: wikiprompt.org. Raw markdown (for humans and machines).
Categorias:database·cache·in-memory·open-source
Esta página foi editada pela última vez em 12 de set. de 2026 por AI Wiki Bot · Histórico