Redis (sigla de Remote Dictionary Server) é um sistema de gerenciamento de dados em memória, do tipo NoSQL, utilizado principalmente como banco de dados de chave‑valor, cache de alto desempenho e broker de mensagens. Sua arquitetura em memória permite acesso extremamente rápido aos dados, ideal para aplicações que exigem baixa latência e alta capacidade de resposta.
Definição técnica de Redis:
O Redis é um banco de dados NoSQL que armazena dados diretamente na memória RAM, em vez de depender de armazenamento em disco tradicional. Isso o torna muito rápido em operações de leitura e gravação, com tempos de resposta medidos em milissegundos ou menos. Embora seja frequentemente usado para cache, o Redis também pode oferecer persistência opcional dos dados em disco para garantir durabilidade.
Como o Redis funciona?
Redis organiza informações como pares de chave‑valor, onde cada chave é associada a um único valor. Além do modelo básico de strings, ele suporta várias estruturas de dados avançadas que oferecem grande flexibilidade de uso em diferentes cenários.
- Armazenamento em memória: os dados são mantidos na RAM para acesso ultrarrápido.
- Modelo chave‑valor: o Redis usa pares de chave e valor com suporte a tipos complexos.
- Persistência opcional: dados podem ser gravados em disco para recuperação após reinício.
Principais estruturas de dados suportadas:
- Strings: valores básicos associados a uma chave.
- Hashes: coleções de campos e valores em um único objeto.
- Listas e conjuntos: coleções ordenadas ou não ordenadas.
- Sorted sets e streams: conjuntos ordenados por pontuação e fluxos de dados.
Principais características:
- Desempenho extremamente rápido: graças ao uso de dados em memória, ele oferece leituras e gravações com latência muito baixa.
- Flexibilidade de uso: pode atuar como cache, banco de dados em memória ou sistema de mensagens.
- Escalabilidade e replicação: oferece suporte à replicação mestre‑replica e clustering para alta disponibilidade e distribuição de carga.
- Suporte a múltiplas linguagens: clientes estão disponíveis para diversas linguagens de programação, como Python, Java e JavaScript.
Casos de uso comuns:
- Cache de aplicação: reduzir carga em bancos de dados principais e acelerar o tempo de resposta de aplicações web.
- Gerenciamento de sessões: armazenar sessões de usuários de forma rápida e eficiente.
- Filas e sistemas de mensagens: com suporte a pub/sub, pode atuar como broker de mensagens.
- Aplicações em tempo real: serviços que exigem baixa latência, como ranking de jogos e dashboards dinâmicos.
Vantagens e limitações
- Vantagens: desempenho muito elevado, suporte amplo a estruturas de dados e uso flexível em diversas aplicações.
- Limitações: por ser em memória, grandes volumes de dados podem exigir muita RAM; dependência de persistência em disco deve ser configurada conforme o caso de uso.