Guia Essencial de Comandos e Administração do Redis

Configuração e Gerenciamento de Instâncias

Para operar múltiplas instâncias do Redis no mesmo servidor, é necessário duplicar o arquivo de configuração base e ajustar as diretivas de porta e arquivos de log para evitar conflitos.

# Copiar e modificar a configuração para uma nova instância
cp /etc/redis/redis.conf /etc/redis/redis-node2.conf
sed -i 's/^port 6379/port 6380/' /etc/redis/redis-node2.conf
sed -i 's/^logfile .*/logfile "\/var\/log\/redis\/redis-node2.log"/' /etc/redis/redis-node2.conf

# Iniciar a nova instância em modo daemon
redis-server /etc/redis/redis-node2.conf --daemonize yes

Monitoramento e Ciclo de Vida

A verificação do status do serviço e o gerenciamento de conexões podem ser realizados através de utilitários do sistema operacional e do próprio cliente do Redis.

# Verificar processos ativos do Redis
pgrep -a redis-server

# Confirmar se a porta customizada está em estado de escuta
ss -tlnp | grep 6380

# Conectar via CLI especificando a porta e autenticação
redis-cli -p 6380 -a "sua_senha_segura"

# Encerrar a instância de forma segura, salvando os dados antes de fechar
redis-cli -p 6380 shutdown save

Gerenciamento de Chaves e Bancos de Dados

O Redis suporta múltiplos bancos de dados lógicos (numerados de 0 a 15 por padrão). A mnaipulação em massa de chaves exige cuidado em ambientes de produção para evitar bloqueios no thread principal.

# Limpar completamente o banco de dados lógico atual (DB 0)
redis-cli -n 0 FLUSHDB

# Limpar todos os bancos de dados de forma assíncrona (recomendado para produção)
redis-cli FLUSHALL ASYNC

# Excluir chaves específicas por padrão usando pipeline no bash
redis-cli -n 2 KEYS "cache:session:*" | xargs -r redis-cli -n 2 DEL

Operações com Estruturas de Dados Fundamentais

Strings e Contadores

Strings são a estrutura mais básica, ideais para cache de objetos serializados, contadores e manipulação de bits.

# Armazenar um valor com tempo de expiração (TTL) de 1 hora
SET user:1001:profile "{\"name\":\"Carlos\"}" EX 3600

# Incrementar atomicamente um contador de acessos
INCRBY page:home:views 15

# Adicionar dados ao final de uma string existente
APPEND user:1001:audit_log " | login_success"

Hashes

Hashes são perfeitos para represantar objetos com múltiplos campos, economizando memória em comparação com várias chaves do tipo String.

# Definir múltiplos campos de uma vez
HMSET product:500 name "Teclado Mecânico" price 450.90 stock 50

# Aplicar desconto flutuante no preço
HINCRBYFLOAT product:500 price -25.50

# Verificar existência e recuperar dados
HEXISTS product:500 stock
HGETALL product:500

Listas e Filas

Listas mantêm a ordem de inserção e são amplamente utilizadas para implementar filas de mensagens e feeds de atividades.

# Inserir tarefas na cabeça da fila
LPUSH queue:emails "user_a@test.com" "user_b@test.com"

# Consumir a fila de forma bloqueante (timeout de 0 significa espera infinita)
BRPOP queue:emails 0

# Obter os 10 itens mais recentes de um feed
LRANGE feed:user:1001 0 9

Conjuntos (Sets) e Conjuntos Ordenados (Sorted Sets)

Sets garantem unicidade de elementos, enquanto Sorted Sets adicionam uma pontuação (score) para ordenação automática.

# Adicionar tags únicas a um artigo
SADD tags:article:88 "redis" "database" "nosql"

# Verificar interseção entre as tags de dois artigos
SINTER tags:article:88 tags:article:99

# Criar um ranking de jogadores
ZADD leaderboard:game1 1500 "player_alpha" 2300 "player_beta" 1850 "player_gamma"

# Obter o Top 2 jogadores (maiores pontuações)
ZREVRANGE leaderboard:game1 0 1 WITHSCORES

Funcionalidades Avançadas

Pub/Sub (Publicação e Assinatura)

Permite a comunicação em tempo real entre diferentes partes do sistema através de canais.

# Terminal 1: Inscrever-se em um canal de notificações
SUBSCRIBE notifications:system

# Terminal 2: Publicar uma mensagem no canal
PUBLISH notifications:system "Manutenção do servidor iniciará em 5 minutos"

Transações

O Redis suporta transações básicas para garantir que um bloco de comandos seja executado de forma sequencial e isolada.

MULTI
SET config:app_status "maintenance"
INCR config:app_version
EXEC

Scripting com Lua

Scripts Lua permitem executar lógica complexa no lado do servidor de forma atômica, reduzindo a latência de rede.

# Script simples para definir uma chave apenas se ela não existir, retornando 1 ou 0
EVAL "if redis.call('exists', KEYS[1]) == 0 then redis.call('set', KEYS[1], ARGV[1]); return 1 else return 0 end" 1 my_custom_key "custom_value"

Administração e Diagnóstico do Servidor

Comandos administrativos são cruciais para monitoramento de performance, ajuste de configurações em tempo real e manutenção de dados.

# Salvar o dataset em disco de forma assíncrona
BGSAVE

# Reescrever o arquivo AOF (Append Only File) para otimizar espaço
BGREWRITEAOF

# Listar clientes conectados e encerrar uma conexão específica pelo ID
CLIENT LIST
CLIENT KILL ID 45

# Alterar configuração de memória máxima sem reiniciar o serviço
CONFIG SET maxmemory "2gb"
CONFIG SET maxmemory-policy "allkeys-lru"

# Inspecionar o log de comandos lentos (slow log)
SLOWLOG GET 10

Tags: Redis nosql in-memory-database cache redis-cli

Publicado em 8-16 20:38