Redis versus Memcached: Escolha do mecanismo adequado
Compare o Redis (persistência, replicação, conjuntos ordenados e publicação/assinatura) com o Memcached (simplicidade e multithreading) e selecione com base nos requisitos do caso de uso.
Redis versus Memcached: Escolha do mecanismo adequado é uma aula grátis de AWS Solutions Architect no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de AWS Solutions Architect, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de AWS Solutions Architect inclui 4 aulas no total.
O que é o Amazon ElastiCache
O Amazon ElastiCache é um serviço de armazenamento em cache em memória totalmente gerenciado que facilita a implantação, o gerenciamento e a expansão de armazenamentos de dados em memória de código aberto populares na nuvem. Ele é compatível com dois mecanismos: Redis e Memcached. Ao fornecer dados solicitados com frequência diretamente da memória, em vez de buscá-los em um banco de dados, o ElastiCache pode reduzir a carga do banco de dados em várias ordens de grandeza e diminuir a latência de resposta de milissegundos para microssegundos. Escolher entre Redis e Memcached é uma pergunta comum no exame SAA-C03.
Memcached: simplicidade absoluta
O Memcached é um armazenamento distribuído de chave-valor em memória, voltado para a simplicidade e a escalabilidade horizontal. Características principais: multithread (pode usar todos os núcleos de CPU em um único nó), armazenamento simples de chave-valor (somente strings, sem estruturas de dados complexas), sem persistência (os dados são perdidos quando um nó é reiniciado), sem replicação (sem nó de espera ou réplicas) e fragmentação horizontal por meio de hashing consistente no lado do cliente. O Memcached é a escolha certa quando você precisa de um cache simples e de grande escala e não precisa de persistência, tipos de dados complexos ou alta disponibilidade.
# Create a Memcached cluster with 3 nodes
aws elasticache create-cache-cluster \
--cache-cluster-id my-memcached \
--engine memcached \
--cache-node-type cache.r7g.large \
--num-cache-nodes 3 \
--cache-subnet-group-name my-subnet-group
# Memcached auto-discovers nodes via the config endpoint
# Application connects to: my-memcached.cfg.use1.cache.amazonaws.com:11211Redis: armazenamento em memória completo
O Redis (Remote Dictionary Server) é um armazenamento de estruturas de dados em memória, rico em recursos e de thread único (por instância), compatível com strings, hashes, listas, conjuntos, conjuntos ordenados, bitmaps, HyperLogLogs, fluxos e índices geoespaciais. Vantagens principais em relação ao Memcached: persistência opcional (instantâneos AOF e RDB), replicação (réplicas de leitura e failover automático), mensagens pub/sub, scripts Lua, transações (MULTI/EXEC) e modo de cluster para fragmentação horizontal. O Redis é a escolha certa para a maioria dos cenários reais de armazenamento em cache.
# Redis data structure examples
# String
# SET user:1:name 'Alice'
# GET user:1:name
# Hash (object-like)
# HSET product:42 name 'Widget' price '9.99' stock '100'
# HGETALL product:42
# Sorted set (leaderboard)
# ZADD leaderboard 9500 'alice' 8700 'bob' 9100 'carol'
# ZREVRANGE leaderboard 0 2 WITHSCORES
# Pub/Sub
# PUBLISH notifications 'order_shipped:12345'
# SUBSCRIBE notificationsPersistência do Redis: AOF e RDB
O Redis é compatível com dois mecanismos de persistência: RDB (Redis Database) — instantâneos periódicos de um ponto no tempo, salvos em disco em intervalos configuráveis (reinicializações rápidas, mas os dados entre os instantâneos podem ser perdidos). AOF (Append-Only File) — registra todas as operações de gravação; durante a reinicialização, o Redis reproduz o registro para reconstruir o estado (durabilidade ao custo de arquivos maiores e reinicializações mais lentas). No ElastiCache, você pode ativar o AOF para manter os dados entre reinicializações de nós. Isso é fundamental quando o ElastiCache é usado não apenas como cache, mas também como armazenamento de dados principal, por exemplo, para dados de sessão.
# Create an ElastiCache Redis cluster with AOF enabled
aws elasticache create-replication-group \
--replication-group-id my-redis \
--replication-group-description 'Redis with persistence' \
--cache-node-type cache.r7g.large \
--engine redis \
--num-cache-clusters 2 \
--cache-parameter-group-name default.redis7 \
--snapshot-retention-limit 5
# Note: Enable AOF via parameter group: appendonly=yesReplicação e failover automático do Redis
O Redis é compatível com grupos de replicação com um nó primário que processa todas as gravações e até 5 réplicas de leitura que processam as leituras. Com Multi-AZ e failover automático ativados, o ElastiCache promove automaticamente uma réplica de leitura a primária quando a primária falha — normalmente concluindo o failover em menos de 60 segundos. Isso proporciona alta disponibilidade às aplicações baseadas em Redis, algo que o Memcached não consegue igualar (o Memcached não tem replicação). Para aplicações de Production que exigem armazenamento em cache com HA, use sempre o Redis com failover automático.
# Create a Redis replication group with Multi-AZ failover
aws elasticache create-replication-group \
--replication-group-id prod-redis \
--description 'Production Redis with HA' \
--cache-node-type cache.r7g.xlarge \
--engine redis \
--multi-az-enabled \
--automatic-failover-enabled \
--num-cache-clusters 3 \
--cache-subnet-group-name multi-az-subnet-group
# 1 primary + 2 replicas across 3 AZsConjuntos ordenados do Redis para Leaderboard
Os conjuntos ordenados são uma das estruturas de dados mais poderosas do Redis. Cada membro tem uma pontuação de ponto flutuante associada, e os membros são sempre mantidos em ordem. Isso torna os conjuntos ordenados ideais para Leaderboards (classificação por pontuação), filas de prioridade (processamento primeiro das tarefas de maior prioridade) e limitação de taxa (janela deslizante com marcações de tempo como pontuações). As operações ZADD, ZRANGE, ZREVRANGE, ZRANK e ZRANGEBYSCORE são todas O(log n) — extremamente eficientes até mesmo para milhões de entradas.
# Leaderboard operations using Redis sorted sets
# Add/update scores
# ZADD game:leaderboard 10500 'player:alice'
# ZADD game:leaderboard 9800 'player:bob'
# ZADD game:leaderboard 11200 'player:carol'
# Get top 3 players (highest scores first)
# ZREVRANGE game:leaderboard 0 2 WITHSCORES
# Result: carol 11200, alice 10500, bob 9800
# Get a player's rank (0-indexed)
# ZREVRANK game:leaderboard 'player:alice'
# Result: 1 (second place)Pub/Sub do Redis para mensagens
O pub/sub do Redis permite que os publicadores transmitam mensagens para canais sem saber quem está inscrito. Os assinantes recebem, em tempo real, todas as mensagens publicadas nos canais aos quais se inscreveram. As mensagens de pub/sub não são persistentes — se um assinante estiver offline, ele perderá a mensagem. Para mensagens persistentes com entrega garantida, use os fluxos do Redis (uma estrutura de dados mais robusta adicionada no Redis 5) ou um serviço de mensagens específico, como SQS ou SNS. No exame SAA-C03, o pub/sub do Redis é uma opção para notificações leves em tempo real entre serviços.
# Publisher side (broadcasts to 'notifications' channel)
# PUBLISH notifications '{"type":"order_shipped","orderId":"12345"}'
# Subscriber side (listens for messages)
# SUBSCRIBE notifications
# Pattern subscribe (wildcard channel matching)
# PSUBSCRIBE order:*
# Receives messages from: order:created, order:shipped, order:delivered
# Note: Unlike SQS, pub/sub is fire-and-forget — no acknowledgementMemcached vs Redis: tabela de decisão
Use esta estrutura para escolher no exame SAA-C03: escolha o Memcached quando precisar de: cache simples sem requisito de HA, desempenho multithread e escalabilidade horizontal por meio da adição de nós (cache puro). Escolha o Redis quando precisar de: persistência (armazenamento de sessões), replicação e failover (HA), tipos de dados complexos (conjuntos ordenados para Leaderboards, conjuntos e listas), pub/sub, transações Lua ou Cluster Mode para escalabilidade horizontal com vários fragmentos. Se a pergunta do exame mencionar qualquer recurso além do armazenamento em cache simples de chave-valor, quase sempre a resposta será Redis.
Tipos e famílias de nós de cache
O ElastiCache oferece várias famílias de tipos de nós: r7g (Graviton 3, otimizado para memória — melhor relação entre preço e desempenho, recomendado para a maioria dos caches), m7g (computação e memória equilibradas) e t4g (expansão temporária, baixo custo para desenvolvimento e testes). Os tamanhos dos nós variam de cache.t4g.micro (500 MB) a cache.r7g.16xlarge (425 GB). Para Production, escolha um tamanho de nó que mantenha seu conjunto de dados na memória com uma margem de 20% a 25%. Ficar sem memória causa remoções (Memcached) ou erros de OOM (Redis).
# Get available cache node types
aws elasticache describe-cache-engine-versions \
--engine redis \
--query 'CacheEngineVersions[?contains(EngineVersion, '7')].{Engine:Engine,Version:EngineVersion}'
# Check memory and vCPU for a node type
aws elasticache describe-cache-engine-versions \
--cache-parameter-group-family redis7
# Monitor evictions to detect memory pressure
# CloudWatch: Evictions metric > 0 means cache is fullSegurança do ElastiCache
O ElastiCache é implantado dentro da sua VPC, com grupos de segurança controlando o acesso — por padrão, não há acesso à Internet pública. Para o Redis, ative tokens AUTH (uma senha que os clientes devem fornecer) e criptografia em trânsito (TLS) para as conexões, além da criptografia em repouso usando KMS. Para o Memcached, somente TLS em trânsito está disponível (sem criptografia em repouso ou AUTH). Ao migrar de um Redis não criptografado para um criptografado, não há migração no local — você deve criar um novo cluster criptografado e aquecê-lo.
# Create a Redis cluster with TLS and AUTH token
aws elasticache create-replication-group \
--replication-group-id secure-redis \
--description 'Encrypted Redis' \
--cache-node-type cache.r7g.large \
--engine redis \
--transit-encryption-enabled \
--at-rest-encryption-enabled \
--auth-token 'MySecretPassword123!'
# Store the AUTH token in Secrets Manager, not in your app codePolíticas de remoção
Quando um cache Redis ou Memcached está cheio, a política de remoção determina quais chaves serão removidas para liberar espaço. Políticas comuns de remoção do Redis: noeviction (retorna um erro de OOM — adequado quando o cache é o armazenamento principal), allkeys-lru (remove as chaves usadas menos recentemente entre todas as chaves — adequado para um cache geral), volatile-lru (aplica LRU às chaves com TTL definido — preserva as chaves sem expiração), allkeys-random (remoção aleatória) e allkeys-lfu (remove as chaves usadas com menor frequência). Para casos de uso comuns de armazenamento em cache, recomenda-se allkeys-lru ou allkeys-lfu.
# Set eviction policy via parameter group
aws elasticache create-cache-parameter-group \
--cache-parameter-group-name redis7-lru \
--cache-parameter-group-family redis7 \
--description 'LRU eviction policy'
aws elasticache modify-cache-parameter-group \
--cache-parameter-group-name redis7-lru \
--parameter-name-values ParameterName=maxmemory-policy,ParameterValue=allkeys-lru
# Apply the parameter group to your cluster:
aws elasticache modify-replication-group \
--replication-group-id prod-redis \
--cache-parameter-group-name redis7-lruVerificação rápida
Test a sua compreensão dos conceitos de AWS Solutions Architect (SAA-C03) desta lição.
Resumo da lição
Nesta lição, você aprendeu que o Memcached é simples, multithread e não tem HA — ideal para a escalabilidade horizontal pura de caches simples; o Redis é compatível com estruturas de dados complexas, persistência, pub/sub e failover Multi-AZ — ideal para a maioria dos cenários de armazenamento em cache de Production; e os conjuntos ordenados tornam o Redis a escolha natural para Leaderboards e filas de prioridade. A seguir, exploraremos os grupos de replicação do Redis e o Cluster Mode para a fragmentação horizontal.
Aprenda AWS Solutions Architect com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 30
- Aulas
- 120
Perguntas Frequentes
A aula “Redis versus Memcached: Escolha do mecanismo adequado” é grátis?
Sim — o texto completo de “Redis versus Memcached: Escolha do mecanismo adequado” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de AWS Solutions Architect, atualize para CoddyKit PRO. O curso de AWS Solutions Architect inclui 4 aulas no total.
O que vou aprender em “Redis versus Memcached: Escolha do mecanismo adequado”?
Compare o Redis (persistência, replicação, conjuntos ordenados e publicação/assinatura) com o Memcached (simplicidade e multithreading) e selecione com base nos requisitos do caso de uso. Você pratica AWS Solutions Architect com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar AWS Solutions Architect?
Nenhuma experiência prévia é necessária. AWS Solutions Architect no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Redis versus Memcached: Escolha do mecanismo adequado”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de AWS Solutions Architect?
Sim. Cada aula de AWS Solutions Architect inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Redis versus Memcached: Escolha do mecanismo adequado
- Grupos de replicação e modo de cluster do ElastiCache Redis
- Estratégias de cache: carregamento sob demanda e gravação simultânea
- Armazenamento de sessões e padrões de classificação