Redis: Tutorial Redis - Página Inicial
Redis é um armazenamento chave-valor em memória de código aberto que pode ser usado como banco de dados, cache e intermediário de mensagens. Ele suporta múltiplas estruturas de dados, oferece desempenho extremamente alto e é um componente essencial em aplicações web modernas.
1. O que é Redis?
Redis significa REmote DIctionary Server, desenvolvido por Salvatore Sanfilippo em 2009. Ele armazena dados em memória, fornecendo velocidades de leitura e escrita extremamente rápidas, capazes de lidar com mais de 100.000 operações por segundo.
(1) Recursos Principais do Redis
| Recurso | Descrição |
|---|---|
| Armazenamento em memória | Dados armazenados em memória para velocidades de leitura e escrita extremamente rápidas |
| Persistência | Suporta snapshots RDB e registro AOF |
| Tipos de dados ricos | Suporta strings, hashes, listas, conjuntos, conjuntos ordenados e mais |
| Operações atômicas | Todas as operações são atômicas, com suporte a transações |
| Pub/Sub | Sistema de publicação/assinatura integrado |
| Alto desempenho | QPS de instância única pode exceder 100k, com replicação mestre-réplica e suporte a cluster |
2. O que o Redis Pode Fazer?
(1) Sistema de Cache
Este é o caso de uso mais comum. Armazene resultados de consultas de banco de dados, respostas de API, fragmentos de página, etc., no Redis para aumentar drasticamente o desempenho da aplicação.
Requisição do Usuário → Verificar Cache Redis → Acerto → Retornar
↓ Erro
Consultar BD → Armazenar no Redis → Retornar
(2) Armazenamento de Sessão
Armazene estado de login do usuário, carrinhos de compras, dados temporários, etc., no Redis para suportar compartilhamento de sessão em ambientes distribuídos.
(3) Fila de Mensagens
Use as Listas do Redis e Pub/Sub para implementar filas de mensagens leves.
(4) Rankings
Aproveite os recursos de ordenação dos Conjuntos Ordenados para rankings de jogos, listas de tendências e muito mais.
(5) Contadores
Use o comando INCR em strings para contagem de visualizações de artigos, curtidas, estatísticas de visita e muito mais.
(6) Funcionalidades Sociais
Use operações de interseção e união de Conjuntos para implementar amigos em comum, pessoas que você talvez conheça e outras funcionalidades sociais.
3. Redis vs Outros Bancos de Dados
(1) Redis vs Memcached
| Aspecto | Redis | Memcached |
|---|---|---|
| Tipos de dados | Rico (5 tipos básicos) | Apenas strings |
| Persistência | Suportado | Não suportado |
| Cluster | Suporte nativo | Requer sharding no cliente |
| Gerenciamento de memória | Mais flexível | Mais simples |
| Desempenho | Extremamente alto | Extremamente alto |
(2) Redis vs Bancos de Dados Relacionais (MySQL)
| Aspecto | Redis | MySQL |
|---|---|---|
| Armazenamento | Memória | Disco |
| Modelo de dados | Chave-valor | Tabelas relacionais |
| Capacidade de consulta | Simples | Poderosa (SQL) |
| Suporte a transações | Transações simples | ACID completo |
| Desempenho | Extremamente alto | Alto |
| Persistência | Opcional | Padrão |
(3) Redis vs MongoDB
| Aspecto | Redis | MongoDB |
|---|---|---|
| Modelo de dados | Chave-valor | Documento (JSON) |
| Linguagem de consulta | Baseada em comandos | Similar a SQL |
| Uso de memória | Totalmente em memória | Memória + disco |
| Casos de uso | Cache, sessões, filas | Armazenamento de documentos, gerenciamento de conteúdo |
4. Casos de Uso do Redis
(1) Usado por Grandes Empresas de Internet
- Weibo: Armazena relacionamentos de usuários, filas de mensagens, tópicos populares
- Taobao: Cache de produtos, carrinhos de compras, sistemas de promoção relâmpago
- WeChat: Mensagens de sessão, curtidas no Moments
- GitHub: Cache, filas, contadores
(2) Cenários de Aplicação Típicos
| Cenário | Tipo de Dado Usado | Descrição |
|---|---|---|
| Cache | String | Armazena dados em cache com expiração |
| Armazenamento de sessão | String | Armazena informações de sessão do usuário |
| Carrinho de compras | Hash | Armazena IDs de produtos e quantidades |
| Fila de mensagens | List | LPUSH/RPOP para enfileiramento |
| Ranking | Sorted Set | Ordenação automática, atualizações em tempo real |
| Relacionamentos sociais | Set | Listas de amigos, cálculos de interseção |
| Contador | String | INCR incremento atômico |
| Limitação de taxa | String + TTL | Rastrear contagens de acesso |
5. Histórico de Versões do Redis
| Versão | Data de Lançamento | Recursos Principais |
|---|---|---|
| 1.0 | 2009 | Lançamento inicial |
| 2.0 | 2010 | Memória virtual, Pub/Sub |
| 2.6 | 2012 | Scripts Lua, precisão de expiração melhorada |
| 2.8 | 2013 | Sincronização parcial, reescrita de configuração |
| 3.0 | 2015 | Suporte oficial a cluster |
| 3.2 | 2016 | GEO, otimizações de bitmap |
| 4.0 | 2017 | Sistema de módulos, persistência mista |
| 5.0 | 2018 | Tipo de dados Streams |
| 6.0 | 2020 | Controle de acesso ACL, I/O multi-thread |
| 7.0 | 2022 | Funções, AOF multi-parte |
6. Para Quem é Este Tutorial?
- Desenvolvedores backend: Aprenda Redis para aumentar o desempenho da aplicação
- Engenheiros DevOps: Domine a implantação e otimização do Redis
- Arquitetos: Entenda o Redis na arquitetura de sistemas
- Estudantes: Aprenda tecnologia moderna de banco de dados
7. Pré-requisitos
- Conhecimento básico de comandos Linux
- Familiaridade com pelo menos uma linguagem de programação (Python, Java, Node.js, etc.)
- Compreensão básica de conceitos de banco de dados
8. Conteúdo do Tutorial
Este tutorial está dividido em 4 partes:
- Básico do Redis: Instalação, configuração, operações básicas
- Tipos de Dados em Detalhe: Strings, hashes, listas, conjuntos, conjuntos ordenados
- Recursos Avançados: Transações, persistência, segurança, otimização de desempenho
- Aplicações Práticas: Usando Redis com Python, Java, Node.js
▶ Exemplo
Conexão e operações básicas:
127.0.0.1:6379> PING
PONG
127.0.0.1:6379> SET mykey "Ola"
OK
127.0.0.1:6379> GET mykey
"Ola"
❓ Perguntas Frequentes
📖 Resumo
- Redis é um banco de dados chave-valor em memória com alto desempenho e tipos de dados ricos
- Comumente usado para cache, armazenamento de sessão, filas de mensagens, rankings, etc.
- Comparado ao Memcached, Redis suporta mais tipos de dados e persistência
- Comparado ao MySQL, Redis é mais rápido mas não adequado para consultas complexas
- Versão recomendada: Redis 6.0 ou superior
9. 📝 Atividades
- Pense: Em seus projetos, quais cenários são adequados para Redis?
- Pesquise: Olhe sites ou aplicativos que você usa regularmente — para que eles podem estar usando Redis?
- Compare: Quais são os prós e contras do Redis vs Memcached? Como você escolheria?
10. Próxima Lição
Na próxima lição, nós aprenderemos sobre Instalação do Redis, abordando a instalação no Linux, Windows e Mac.
📝 Exercícios
- Prática: Execute os comandos apresentados nesta lição
- Experimentação: Teste variações dos comandos aprendidos
- Aplicação: Aplique os conceitos em um projeto prático