Configuração do Redis

A configuração do Redis é flexível e poderosa. Esta lição aborda o arquivo de configuração e opções comuns.

Local do Arquivo de Configuração

Diferentes métodos de instalação colocam o arquivo de configuração em locais diferentes:

Método de Instalação Local do Arquivo de Configuração
apt (Ubuntu) /etc/redis/redis.conf
yum (CentOS) /etc/redis.conf
Código fonte Diretório fonte redis.conf, deve copiar manualmente
Homebrew (Mac) /usr/local/etc/redis.conf
Windows Diretório de instalação redis.windows.conf

Criando Arquivo de Configuração Após Instalação por Código Fonte

BASH
# Criar diretório de configuração
sudo mkdir -p /etc/redis

# Copiar arquivo de configuração
sudo cp /tmp/redis-7.0.11/redis.conf /etc/redis/redis.conf

# Criar diretório de dados
sudo mkdir -p /var/lib/redis
sudo chown redis:redis /var/lib/redis

Formato do Arquivo de Configuração

Arquivos de configuração do Redis usam um formato simples de chave-valor:

CONF
# Isto é um comentário

# Formato básico
config-key valor

# Exemplo
port 6379
bind 127.0.0.1
daemonize yes
💡 Observação: Chaves e valores de configuração são separados por um espaço — não é necessário sinal de igual.

Opções Principais de Configuração

Configuração de Rede

CONF
# Vincular endereço IP
# 127.0.0.1 — acesso local apenas
# 0.0.0.0 — permitir todos os IPs (perigoso!)
# 192.168.1.100 — vincular a um IP específico
bind 127.0.0.1

# Porta de escuta
port 6379

# Modo protegido (recomendado manter ativado)
# yes: só permite conexões locais a menos que bind ou senha estejam definidos
# no: permite conexões remotas
protected-mode yes

# Tamanho da fila de backlog TCP
tcp-backlog 511

# Tempo limite de inatividade do cliente em segundos (0 significa nunca desconectar)
timeout 0

# Intervalo de keepalive TCP em segundos
tcp-keepalive 300
⚠️ Atenção: bind 0.0.0.0 permite acesso de todos os IPs — você deve definir uma senha!

Configuração Geral

CONF
# Executar como daemon (segundo plano)
daemonize no

# Local do arquivo PID
pidfile /var/run/redis/redis-server.pid

# Nível de log
# debug: muita informação de depuração
# verbose: muita informação útil
# notice: moderadamente verboso (recomendado para produção)
# warning: apenas mensagens importantes
loglevel notice

# Local do arquivo de log
# String vazia significa saída para stdout
logfile /var/log/redis/redis-server.log

# Número de bancos de dados (padrão 16, numerados 0-15)
databases 16

Gerenciamento de Memória

CONF
# Uso máximo de memória
# Formato: 1kb, 5mb, 2gb, etc.
# 0 significa ilimitado (perigoso!)
maxmemory 256mb

# Política de remoção quando o limite de memória é atingido
# volatile-lru: remove chaves com TTL definido (algoritmo LRU)
# allkeys-lru: remove qualquer chave (algoritmo LRU)
# volatile-lfu: remove chaves com TTL definido (algoritmo LFU)
# allkeys-lfu: remove qualquer chave (algoritmo LFU)
# volatile-random: remove aleatoriamente chaves com TTL definido
# allkeys-random: remove aleatoriamente qualquer chave
# volatile-ttl: remove chaves com o menor TTL
# noeviction: não remove, retorna erro (padrão)
maxmemory-policy allkeys-lru

# Tamanho da amostra LRU/LFU
# Valores maiores são mais precisos mas usam mais CPU
maxmemory-samples 5
💡 Como escolher uma política de remoção?

  • Cenários de cache: allkeys-lru ou allkeys-lfu
  • Cenários de persistência: noeviction ou volatile-lru

Configuração de Persistência (RDB)

CONF
# Condições de disparo de snapshot RDB
# save <segundos> <alterações>
# Pelo menos 1 alteração em 900 segundos → dispara snapshot
save 900 1
save 300 10
save 60 10000

# Desabilitar RDB (comentar save ou definir como vazio)
# save ""

# Nome do arquivo RDB
dbfilename dump.rdb

# Diretório de armazenamento do arquivo RDB
dir /var/lib/redis

# Compressão RDB (recomendado manter ativado)
rdbcompression yes

# Checksum RDB (recomendado manter ativado)
rdbchecksum yes

Configuração de Persistência (AOF)

CONF
# Habilitar AOF
appendonly no

# Nome do arquivo AOF
appendfilename "appendonly.aof"

# Estratégia de sincronização AOF
# always: sincronizar em cada escrita (mais seguro, mais lento)
# everysec: sincronizar uma vez por segundo (recomendado)
# no: deixar o SO decidir (mais rápido, menos seguro)
appendfsync everysec

# Desabilitar fsync durante reescrita AOF
no-appendfsync-on-rewrite no

# Tamanho do arquivo AOF dispara reescrita
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
💡 RDB vs AOF:

  • RDB: snapshot, arquivos pequenos, recuperação rápida, mas pode perder dados
  • AOF: log, dados mais seguros, mas arquivos maiores, recuperação mais lenta
  • Recomendação: habilitar ambos RDB e AOF

Configuração de Segurança

CONF
# Definir senha (antes do Redis 6.0)
requirepass sua_senha

# Renomear comandos perigosos
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command CONFIG ""
rename-command DEBUG ""
⚠️ Observação: Redis 6.0+ recomenda usar ACL para controle de acesso mais flexível e seguro.

Configuração de Limites

CONF
# Número máximo de conexões de cliente
# 10000 significa até 10000 clientes
maxclients 10000

# Buffer máximo de entrada
client-query-buffer-limit 1gb

# Buffer máximo de saída
# normal: clientes regulares
# replica: nós réplica
# pubsub: clientes pub/sub
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60

Usando o Comando CONFIG

Você pode visualizar e modificar a configuração em tempo de execução.

Visualizar Configuração

REDIS
# Ver toda a configuração
 CONFIG GET *
# Retorna lista alternada de chaves e valores de configuração

# Ver configuração específica
 CONFIG GET port
1) "port"
2) "6379"

 CONFIG GET maxmemory
1) "maxmemory"
2) "0"

# Ver múltiplas configurações (usando curinga)
 CONFIG GET maxmemory*
1) "maxmemory"
2) "0"
3) "maxmemory-policy"
4) "noeviction"
5) "maxmemory-samples"
6) "5"

Modificar Configuração

REDIS
# Definir memória máxima
 CONFIG SET maxmemory 256mb
OK

# Definir nível de log
 CONFIG SET loglevel "debug"
OK

# Definir número de bancos de dados
 CONFIG SET databases 32
OK
⚠️ Observação: Alterações feitas com CONFIG SET entram em vigor imediatamente mas são perdidas na reinicialização. Use CONFIG REWRITE para salvar no arquivo de configuração.

Salvar Configuração no Arquivo

REDIS
# Escrever configuração atual no arquivo de configuração
 CONFIG REWRITE
OK

CONFIG REWRITE vai:

  1. Ler o arquivo de configuração original
  2. Substituir com a configuração atual em tempo de execução
  3. Preservar comentários e formatação

Redefinir Configuração

REDIS
# Redefinir estatísticas
 CONFIG RESETSTAT
OK

Cenários Comuns de Configuração

Cenário 1: Ambiente de Desenvolvimento

CONF
bind 127.0.0.1
port 6379
daemonize no
logfile ""
databases 16
save ""
appendonly no

Cenário 2: Ambiente de Produção

CONF
bind 127.0.0.1
port 6379
daemonize yes
logfile /var/log/redis/redis.log
databases 16

# Gerenciamento de memória
maxmemory 2gb
maxmemory-policy allkeys-lru

# Persistência
save 900 1
save 300 10
save 60 10000
appendonly yes
appendfsync everysec

# Segurança
requirepass sua_senha_forte
rename-command FLUSHALL ""
rename-command FLUSHDB ""

Cenário 3: Configuração de Servidor Cache

CONF
bind 127.0.0.1
port 6379
daemonize yes
maxmemory 4gb
maxmemory-policy allkeys-lru

# Sem necessidade de persistência para cache
save ""
appendonly no

Cenário 4: Configuração de Fila de Mensagens

CONF
bind 127.0.0.1
port 6379
daemonize yes
maxmemory 1gb
maxmemory-policy noeviction

# Filas de mensagens precisam de persistência
appendonly yes
appendfsync everysec

Usando Argumentos de Linha de Comando

Você pode substituir valores de configuração ao iniciar o Redis:

BASH
# Substituir uma única configuração
redis-server --port 6380
redis-server --maxmemory 512mb
redis-server --requirepass minhasenha

# Substituir múltiplas configurações
redis-server --port 6380 --maxmemory 512mb --daemonize yes

# Usar arquivo de configuração + substituir algumas configurações
redis-server /etc/redis/redis.conf --port 6380

Ajuste Dinâmico de Configuração

Ajustando Limites de Memória

REDIS
# Verificar uso atual de memória
 INFO memory
used_memory:1048576
used_memory_human:1.00M

# Ajustar memória máxima
 CONFIG SET maxmemory 512mb
OK

# Salvar configuração
 CONFIG REWRITE
OK

Ajustando Nível de Log

REDIS
# Habilitar temporariamente log de depuração
 CONFIG SET loglevel debug
OK

# Restaurar após depuração
 CONFIG SET loglevel notice
OK

Ajustando Log de Consultas Lentas

REDIS
# Definir limite de consulta lenta (microssegundos)
 CONFIG SET slowlog-log-slower-than 10000
OK

# Definir máximo de entradas no log de consultas lentas
 CONFIG SET slowlog-max-len 128
OK

# Ver log de consultas lentas
 SLOWLOG GET 10

Verificação de Configuração

Verificar Sintaxe do Arquivo de Configuração

BASH
# Verificar na inicialização
redis-server /etc/redis/redis.conf --test-memory 100

Visualizar Configuração em Execução

BASH
# Visualizar a partir da linha de comando
redis-cli CONFIG GET maxmemory

# Visualizar toda a configuração
redis-cli CONFIG GET *

❓ Perguntas Frequentes

P Preciso reiniciar o Redis após alterar a configuração?
R Alterações de configuração via CONFIG SET entram em vigor imediatamente sem reinicialização. No entanto, elas são perdidas na reinicialização — use CONFIG REWRITE para persistí-las.
P Como vejo a configuração padrão do Redis?
R O arquivo redis.conf na distribuição fonte do Redis tem configurações padrão detalhadas com explicações.
P O que acontece se maxmemory for definido como 0?
R 0 significa memória ilimitada. Redis usará toda a memória disponível, o que pode levar a OOM e o sistema matar o processo.
P Como desabilito comandos perigosos?
R Use rename-command FLUSHALL "" no arquivo de configuração para renomear um comando para uma string vazia.
P Um arquivo de configuração pode incluir outros arquivos de configuração?
R Sim, use include /caminho/para/outro.conf.

📖 Resumo

📝 Atividades

  1. Ver configuração: Use CONFIG GET para verificar sua configuração Redis, encontre os valores de maxmemory e maxmemory-policy
  2. Modificar configuração: Use CONFIG SET para alterar maxmemory para 128mb, depois salve com CONFIG REWRITE
  3. Configuração de cenário: Escreva um arquivo de configuração Redis para um cenário de cache
  4. Desabilitar comandos: Desabilite os comandos FLUSHALL e FLUSHDB no arquivo de configuração

Próxima Lição

Na próxima lição, nós aprenderemos sobre Visão Geral dos Tipos de Dados do Redis, abordando os 5 tipos básicos de dados do Redis.

100%