Redis para Administradores e DevOps: Operações e Monitoramento
Como você monitora o desempenho e a saúde do Redis em um ambiente de produção?
Resposta:
Eu geralmente uso redis-cli INFO para verificações rápidas de memória, conexões e persistência. Para monitoramento contínuo, integro o Redis com Prometheus e Grafana, coletando métricas como taxa de acertos/erros (hit/miss ratio), latência e uso de CPU. Ferramentas como RedisInsight ou scripts personalizados também podem fornecer insights valiosos.
Explique o propósito da persistência do Redis. Quais são os principais tipos e quando você escolheria um em vez do outro?
Resposta:
A persistência do Redis garante que os dados sobrevivam a reinicializações. Os principais tipos são RDB (Redis Database Backup) e AOF (Append Only File). RDB é um snapshot de um ponto no tempo, bom para recuperação de desastres devido à sua natureza compacta. AOF registra cada operação de escrita, oferecendo melhor durabilidade com menos perda de dados, mas os arquivos podem ser maiores. Frequentemente, uma combinação de ambos é usada para segurança máxima.
Como você lidaria com uma instância do Redis ficando sem memória?
Resposta:
Primeiro, eu verificaria INFO memory para confirmar o problema. Em seguida, investigaria se maxmemory está definido e se maxmemory-policy é apropriado (por exemplo, allkeys-lru). Se não, consideraria escalar a instância, otimizar estruturas de dados ou implementar expiração de dados (TTL) para liberar espaço. Identificar e remover chaves grandes e não utilizadas também é crucial.
Descreva uma estratégia para realizar um upgrade rolling de um Redis Cluster sem downtime.
Resposta:
Para um upgrade rolling, eu atualizaria uma réplica por vez em cada shard, garantindo que o master tenha pelo menos uma réplica sincronizada antes de atualizá-lo. Após todas as réplicas em um shard serem atualizadas, eu faria um failover do master para uma réplica atualizada, e então atualizaria o master antigo. Isso minimiza o downtime, tendo sempre um nó saudável disponível.
Quais são as causas comuns de alta latência no Redis e como você as soluciona?
Resposta:
Alta latência pode surgir de comandos de longa duração (por exemplo, KEYS, SMEMBERS em conjuntos grandes), problemas de rede, saturação de CPU ou operações de persistência (sincronizações RDB/AOF). Eu usaria redis-cli --latency e redis-cli --latency-history para verificações em tempo real, SLOWLOG GET para identificar comandos lentos e monitoraria métricas do sistema como CPU e I/O de rede.
Como você protege uma instância do Redis em um ambiente de produção?
Resposta:
Medidas de segurança incluem vincular o Redis a interfaces específicas ou localhost, usar um requirepass forte para autenticação, habilitar criptografia TLS/SSL para comunicação cliente-servidor e configurar regras de firewall para restringir o acesso a IPs confiáveis. Executar o Redis com um usuário não-root e desabilitar comandos perigosos via rename-command também são boas práticas.
Explique o papel do Redis Sentinel. Como ele contribui para alta disponibilidade?
Resposta:
O Redis Sentinel fornece alta disponibilidade monitorando instâncias master e réplica do Redis. Se um master falhar, o Sentinel executa automaticamente um failover, promovendo uma réplica a master e reconfigurando outras réplicas para usar o novo master. Ele também atua como um serviço de descoberta para clientes, fornecendo o endereço do master atual.
Você nota um aumento significativo no uso de memória do Redis, mas nenhum aumento correspondente no tráfego da aplicação. Qual poderia ser a causa?
Resposta:
Isso pode indicar fragmentação de memória, especialmente se estiver usando Jemalloc. Também pode ser devido a chaves grandes acumuladas sem expiração, ou um bug na aplicação armazenando dados excessivos. Eu verificaria INFO memory para mem_fragmentation_ratio e usaria redis-cli --bigkeys para identificar chaves grandes.
Como você faria backup de um dataset do Redis em um ambiente de produção?
Resposta:
O método principal é usar BGSAVE para gerar um snapshot RDB. Para backups robustos, eu copiaria este arquivo RDB para um local separado e seguro (por exemplo, S3, NFS). Se o AOF estiver habilitado, fazer backup do arquivo AOF periodicamente também é importante. Para dados críticos, uma réplica pode ser usada para gerar backups sem impactar o master.
Qual é a importância de maxmemory-policy no Redis e quais políticas são comumente usadas?
Resposta:
maxmemory-policy dita como o Redis se comporta quando o limite de maxmemory é atingido. Políticas comuns incluem noeviction (retorna erros em escritas), allkeys-lru (evicta as chaves menos recentemente usadas de todas as chaves), volatile-lru (evicta chaves LRU apenas com TTL definido) e allkeys-random. allkeys-lru é frequentemente um bom padrão para caching.