Folha de Dicas do Redis

Aprenda Redis com Laboratórios Práticos

Aprenda operações de estrutura de dados na memória do Redis através de laboratórios práticos e cenários do mundo real. O LabEx fornece cursos abrangentes de Redis cobrindo comandos essenciais, estruturas de dados, estratégias de cache, mensagens pub/sub e otimização de desempenho. Domine o cache de alto desempenho e o processamento de dados em tempo real.

Instalação e Configuração do Redis

Docker: docker run redis

A maneira mais rápida de colocar o Redis em execução localmente.

# Execute o Redis no Docker
docker run --name my-redis -p 6379:6379 -d redis
# Conecte-se ao CLI do Redis
docker exec -it my-redis redis-cli
# Execute com armazenamento persistente
docker run --name redis-persistent -p 6379:6379 -v redis-data:/data -d redis

Linux: sudo apt install redis

Instale o servidor Redis em sistemas Ubuntu/Debian.

# Instalar Redis
sudo apt update
sudo apt install redis-server
# Iniciar o serviço Redis
sudo systemctl start redis-server
# Habilitar inicialização automática na inicialização
sudo systemctl enable redis-server
# Verificar status
sudo systemctl status redis

Conectar e Testar: redis-cli

Conecte-se ao servidor Redis e verifique a instalação.

# Conectar ao Redis local
redis-cli
# Testar conexão
redis-cli PING
# Conectar ao Redis remoto
redis-cli -h hostname -p 6379 -a password
# Executar comando único
redis-cli SET mykey "Hello Redis"

Operações Básicas de String

Definir e Obter: SET / GET

Armazene valores simples (texto, números, JSON, etc.).

# Definir um par chave-valor
SET mykey "Hello World"
# Obter valor pela chave
GET mykey
# Definir com expiração (em segundos)
SET session:123 "user_data" EX 3600
# Definir apenas se a chave não existir
SET mykey "new_value" NX
Quiz

Faça login para responder este quiz e acompanhar seu progresso de aprendizagem

O que faz SET mykey "value" EX 3600?
Define a chave com um valor de 3600 bytes
Define a chave apenas se ela existir
Define a chave com um valor que expira após 3600 segundos
Define a chave com 3600 valores diferentes

Manipulação de String: APPEND / STRLEN

Modifique e inspecione valores de string.

# Anexar à string existente
APPEND mykey " - Welcome!"
# Obter o comprimento da string
STRLEN mykey
# Obter substring
GETRANGE mykey 0 4
# Definir substring
SETRANGE mykey 6 "Redis"

Operações Numéricas: INCR / DECR

Incrementar ou decrementar valores inteiros armazenados no Redis.

# Incrementar em 1
INCR counter
# Decrementar em 1
DECR counter
# Incrementar por quantidade específica
INCRBY counter 5
# Incrementar float
INCRBYFLOAT price 0.1
Quiz

Faça login para responder este quiz e acompanhar seu progresso de aprendizagem

O que acontece se você usar INCR em uma chave que não existe?
O Redis cria a chave com o valor 1
O Redis retorna um erro
O Redis cria a chave com o valor 0
Nada acontece

Operações Múltiplas: MSET / MGET

Trabalhe com múltiplos pares chave-valor de forma eficiente.

# Definir múltiplas chaves de uma vez
MSET key1 "value1" key2 "value2" key3 "value3"
# Obter múltiplos valores
MGET key1 key2 key3
# Definir múltiplos apenas se nenhum existir
MSETNX key1 "val1" key2 "val2"

Operações de Lista

Listas são sequências ordenadas de strings, úteis como filas ou pilhas.

Adicionar Elementos: LPUSH / RPUSH

Adicione elementos à esquerda (cabeça) ou à direita (cauda) de uma lista.

# Adicionar à cabeça (esquerda)
LPUSH mylist "first"
# Adicionar à cauda (direita)
RPUSH mylist "last"
# Adicionar múltiplos elementos
LPUSH mylist "item1" "item2" "item3"

Remover Elementos: LPOP / RPOP

Remova e retorne elementos das extremidades da lista.

# Remover da cabeça
LPOP mylist
# Remover da cauda
RPOP mylist
# Pop bloqueante (espera por elemento)
BLPOP mylist 10

Acessar Elementos: LRANGE / LINDEX

Recupere elementos ou intervalos de listas.

# Obter a lista inteira
LRANGE mylist 0 -1
# Obter os 3 primeiros elementos
LRANGE mylist 0 2
# Obter elemento específico pelo índice
LINDEX mylist 0
# Obter o comprimento da lista
LLEN mylist
Quiz

Faça login para responder este quiz e acompanhar seu progresso de aprendizagem

O que retorna LRANGE mylist 0 -1?
Apenas o primeiro elemento
Todos os elementos na lista
Apenas o último elemento
Um erro

Utilitários de Lista: LSET / LTRIM

Modificar o conteúdo e a estrutura da lista.

# Definir elemento no índice
LSET mylist 0 "new_value"
# Aparar lista para intervalo
LTRIM mylist 0 99
# Encontrar posição do elemento
LPOS mylist "search_value"

Operações de Conjunto (Set)

Conjuntos são coleções de elementos de string únicos e não ordenados.

Operações Básicas de Conjunto: SADD / SMEMBERS

Adicione elementos únicos a conjuntos e recupere todos os membros.

# Adicionar elementos ao conjunto
SADD myset "apple" "banana" "cherry"
# Obter todos os membros do conjunto
SMEMBERS myset
# Verificar se o elemento existe
SISMEMBER myset "apple"
Quiz

Faça login para responder este quiz e acompanhar seu progresso de aprendizagem

O que acontece se você tentar adicionar um elemento duplicado a um conjunto Redis?
Cria um erro
Substitui o elemento existente
O duplicado é ignorado e o conjunto permanece inalterado
Cria uma lista em vez disso
# Obter tamanho do conjunto SCARD myset ```

Modificações de Conjunto: SREM / SPOP

Remova elementos de conjuntos de maneiras diferentes.

# Remover elementos específicos
SREM myset "banana"
# Remover e retornar elemento aleatório
SPOP myset
# Obter elemento aleatório sem remover
SRANDMEMBER myset

Operações de Conjunto: SINTER / SUNION

Execute operações matemáticas de conjunto.

# Interseção de conjuntos
SINTER set1 set2
# União de conjuntos
SUNION set1 set2
# Diferença de conjuntos
SDIFF set1 set2
# Armazenar resultado em novo conjunto
SINTERSTORE result set1 set2

Utilitários de Conjunto: SMOVE / SSCAN

Manipulação avançada de conjuntos e varredura.

# Mover elemento entre conjuntos
SMOVE source_set dest_set "element"
# Varredura de conjunto incrementalmente
SSCAN myset 0 MATCH "a*" COUNT 10

Operações de Hash

Hashes armazenam pares campo-valor, como mini objetos JSON ou dicionários.

Operações Básicas de Hash: HSET / HGET

Defina e recupere campos de hash individuais.

# Definir campo de hash
HSET user:123 name "John Doe" age 30
# Obter campo de hash
HGET user:123 name
# Definir múltiplos campos
HMSET user:123 email "john@example.com" city "NYC"
# Obter múltiplos campos
HMGET user:123 name age email

Inspeção de Hash: HKEYS / HVALS

Examine a estrutura e o conteúdo do hash.

# Obter todos os nomes de campo
HKEYS user:123
# Obter todos os valores
HVALS user:123
# Obter todos os campos e valores
HGETALL user:123
# Obter número de campos
HLEN user:123

Utilitários de Hash: HEXISTS / HDEL

Verifique a existência e remova campos de hash.

# Verificar se o campo existe
HEXISTS user:123 email
# Excluir campos
HDEL user:123 age city
# Incrementar campo de hash
HINCRBY user:123 age 1
# Incrementar por float
HINCRBYFLOAT user:123 balance 10.50

Varredura de Hash: HSCAN

Iterar sobre hashes grandes incrementalmente.

# Varredura de campos de hash
HSCAN user:123 0
# Varredura com correspondência de padrão
HSCAN user:123 0 MATCH "addr*" COUNT 10

Operações de Conjunto Ordenado (Sorted Set)

Conjuntos ordenados combinam a exclusividade de conjuntos com ordenação baseada em pontuações.

Operações Básicas: ZADD / ZRANGE

Adicione membros pontuados e recupere intervalos.

# Adicionar membros com pontuações
ZADD leaderboard 100 "player1" 200 "player2"
# Obter membros por classificação (baseado em 0)
ZRANGE leaderboard 0 -1
# Obter com pontuações
ZRANGE leaderboard 0 -1 WITHSCORES
# Obter por intervalo de pontuação
ZRANGEBYSCORE leaderboard 100 200

Informações do Conjunto Ordenado: ZCARD / ZSCORE

Obtenha informações sobre membros do conjunto ordenado.

# Obter tamanho do conjunto
ZCARD leaderboard
# Obter pontuação do membro
ZSCORE leaderboard "player1"
# Obter classificação do membro
ZRANK leaderboard "player1"
# Contar membros no intervalo de pontuação
ZCOUNT leaderboard 100 200

Modificações: ZREM / ZINCRBY

Remova membros e modifique pontuações.

# Remover membros
ZREM leaderboard "player1"
# Incrementar pontuação do membro
ZINCRBY leaderboard 10 "player2"
# Remover por classificação
ZREMRANGEBYRANK leaderboard 0 2
# Remover por pontuação
ZREMRANGEBYSCORE leaderboard 0 100

Avançado: ZUNIONSTORE / ZINTERSTORE

Combine múltiplos conjuntos ordenados.

# União de conjuntos ordenados
ZUNIONSTORE result 2 set1 set2
# Interseção com pesos
ZINTERSTORE result 2 set1 set2 WEIGHTS 1 2
# Com função de agregação
ZUNIONSTORE result 2 set1 set2 AGGREGATE MAX

Gerenciamento de Chaves

Inspeção de Chaves: KEYS / EXISTS

Encontre chaves usando padrões e verifique a existência.

# Obter todas as chaves (use com cuidado em produção)
KEYS *
# Chaves com padrão
KEYS user:*
# Chaves terminando com padrão
KEYS *:profile
# Coringa de caractere único
KEYS order:?
# Verificar se a chave existe
EXISTS mykey

Informações da Chave: TYPE / TTL

Obtenha metadados da chave e informações de expiração.

# Obter tipo de dados da chave
TYPE mykey
# Obter tempo de vida (segundos)
TTL mykey
# Obter TTL em milissegundos
PTTL mykey
# Remover expiração
PERSIST mykey

Operações de Chave: RENAME / DEL

Renomear, excluir e mover chaves.

# Renomear chave
RENAME oldkey newkey
# Renomear apenas se a nova chave não existir
RENAMENX oldkey newkey
# Excluir chaves
DEL key1 key2 key3
# Mover chave para banco de dados diferente
MOVE mykey 1

Expiração: EXPIRE / EXPIREAT

Defina tempos de expiração de chave.

# Definir expiração em segundos
EXPIRE mykey 3600
# Definir expiração em carimbo de data/hora específico
EXPIREAT mykey 1609459200
# Definir expiração em milissegundos
PEXPIRE mykey 60000

Gerenciamento de Banco de Dados

Seleção de Banco de Dados: SELECT / FLUSHDB

Gerencie múltiplos bancos de dados dentro do Redis.

# Selecionar banco de dados (0-15 por padrão)
SELECT 0
# Limpar banco de dados atual
FLUSHDB
# Limpar todos os bancos de dados
FLUSHALL
# Obter tamanho do banco de dados atual
DBSIZE

Informações do Servidor: INFO / PING

Obtenha estatísticas do servidor e teste a conectividade.

# Testar conexão com o servidor
PING
# Obter informações do servidor
INFO
# Obter seção de informações específica
INFO memory
INFO replication
# Obter tempo do servidor
TIME

Persistência: SAVE / BGSAVE

Controle a persistência de dados e backups do Redis.

# Salvamento síncrono (bloqueia o servidor)
SAVE
# Salvamento em segundo plano (não bloqueante)
BGSAVE
# Obter hora do último salvamento
LASTSAVE
# Reescrever arquivo AOF
BGREWRITEAOF

Configuração: CONFIG GET / CONFIG SET

Visualizar e modificar a configuração do Redis.

# Obter toda a configuração
CONFIG GET *
# Obter configuração específica
CONFIG GET maxmemory
# Definir configuração
CONFIG SET timeout 300
# Resetar estatísticas
CONFIG RESETSTAT

Monitoramento de Desempenho

Monitoramento em Tempo Real: MONITOR / SLOWLOG

Rastreie comandos e identifique gargalos de desempenho.

# Monitorar todos os comandos em tempo real
MONITOR
# Obter log de consultas lentas
SLOWLOG GET 10
# Obter comprimento do log lento
SLOWLOG LEN
# Resetar log lento
SLOWLOG RESET

Análise de Memória: MEMORY USAGE / MEMORY STATS

Analise o consumo de memória e otimização.

# Obter uso de memória da chave
MEMORY USAGE mykey
# Obter estatísticas de memória
MEMORY STATS
# Obter relatório do médico de memória
MEMORY DOCTOR
# Limpar memória
MEMORY PURGE

Informações do Cliente: CLIENT LIST

Monitore clientes conectados e conexões.

# Listar todos os clientes
CLIENT LIST
# Obter informações do cliente
CLIENT INFO
# Encerrar conexão do cliente
CLIENT KILL ip:port
# Definir nome do cliente
CLIENT SETNAME "my-app"

Benchmarking: redis-benchmark

Teste o desempenho do Redis com a ferramenta de benchmark integrada.

# Benchmark básico
redis-benchmark
# Operações específicas
redis-benchmark -t SET,GET -n 100000
# Tamanho de carga útil personalizado
redis-benchmark -d 1024 -t SET -n 10000

Recursos Avançados

Transações: MULTI / EXEC

Execute múltiplos comandos atomicamente.

# Iniciar transação
MULTI
SET key1 "value1"
INCR counter
# Executar todos os comandos
EXEC
# Descartar transação
DISCARD
# Observar chaves para alterações
WATCH mykey

Pub/Sub: PUBLISH / SUBSCRIBE

Implemente passagem de mensagens entre clientes.

# Assinar canal
SUBSCRIBE news sports
# Publicar mensagem
PUBLISH news "Breaking: Redis 7.0 released!"
# Assinatura de padrão
PSUBSCRIBE news:*
# Cancelar assinatura
UNSUBSCRIBE news

Scripting Lua: EVAL / SCRIPT

Execute scripts Lua personalizados atomicamente.

# Executar script Lua
EVAL "return redis.call('SET', 'key', 'value')" 0
# Carregar script e obter SHA
SCRIPT LOAD "return redis.call('GET', KEYS[1])"
# Executar por SHA
EVALSHA sha1 1 mykey
# Verificar existência do script
SCRIPT EXISTS sha1

Streams: XADD / XREAD

Trabalhe com streams do Redis para dados semelhantes a logs.

# Adicionar entrada ao stream
XADD mystream * field1 value1 field2 value2
# Ler do stream
XREAD STREAMS mystream 0
# Obter comprimento do stream
XLEN mystream
# Criar grupo de consumidores
XGROUP CREATE mystream mygroup 0

Visão Geral dos Tipos de Dados

Strings: Tipo mais versátil

Pode armazenar texto, números, JSON, dados binários. Tamanho máximo: 512MB. Usado para: cache, contadores, flags.

SET user:123:name "John"
GET user:123:name
INCR page:views

Listas: Coleções ordenadas

Listas ligadas de strings. Usado para: filas, pilhas, feeds de atividade, itens recentes.

LPUSH queue:jobs "job1"
RPOP queue:jobs
LRANGE recent:posts 0 9

Conjuntos (Sets): Coleções únicas

Coleções não ordenadas de strings únicas. Usado para: tags, visitantes únicos, relacionamentos.

SADD post:123:tags "redis" "database"
SISMEMBER post:123:tags "redis"
SINTER user:123:friends user:456:friends

Dicas de Configuração do Redis

Gerenciamento de Memória

Configure limites de memória e políticas de despejo (eviction).

# Definir limite de memória
CONFIG SET maxmemory 2gb
# Definir política de despejo
CONFIG SET maxmemory-policy allkeys-lru
# Verificar uso de memória
INFO memory

Configurações de Persistência

Configure opções de durabilidade de dados.

# Habilitar AOF
CONFIG SET appendonly yes
# Definir intervalos de salvamento
CONFIG SET save "900 1 300 10 60 10000"
# Configurações de reescrita AOF
CONFIG SET auto-aof-rewrite-percentage 100

Configurações de Segurança

Configurações básicas de segurança para o Redis.

# Definir senha
CONFIG SET requirepass mypassword
# Autenticar
AUTH mypassword
# Desabilitar comandos perigosos
CONFIG SET rename-command FLUSHALL ""
# Definir timeout
CONFIG SET timeout 300
# TCP keep alive
CONFIG SET tcp-keepalive 60
# Máximo de clientes
CONFIG SET maxclients 10000

Ajuste de Desempenho

Otimize o Redis para melhor desempenho.

# Habilitar pipelining para múltiplos comandos
# Usar pool de conexões
# Configurar política maxmemory apropriada
# Monitorar consultas lentas regularmente
# Usar estruturas de dados apropriadas para casos de uso