Guia Prático do Redis

Introdução

Redis é um armazenamento de estrutura de dados em memória, frequentemente utilizado como banco de dados, cache e agente de mensagens. Seu modelo de dados chave-valor permite operações com tempo de execução extremamente baixo.

Instalação e Configuração Inicial

Para compilar e instalar o Redis a partir do código-fonte, siga um processo semelhante ao descrito abaixo. As versões e diretórios podem ser ajustados conforme necessário.


#!/bin/bash
# Script simplificado para instalação do Redis

VERSION="redis-7.2.4"
URL="https://download.redis.io/releases/${VERSION}.tar.gz"
INSTALL_PREFIX="/opt/redis"
REDIS_PASS="senha_segura_123"

# Baixar e extrair
wget ${URL}
tar -xzf ${VERSION}.tar.gz
cd ${VERSION}

# Compilar e instalar
make
make PREFIX=${INSTALL_PREFIX} install

# Criar diretórios de configuração e dados
mkdir -p ${INSTALL_PREFIX}/{etc,data,log,run}

# Copiar configuração padrão
cp redis.conf ${INSTALL_PREFIX}/etc/redis.conf

# Ajustes básicos no arquivo de configuração
sed -i "s|^bind .*|bind 0.0.0.0|" ${INSTALL_PREFIX}/etc/redis.conf
sed -i "s|^# requirepass .*|requirepass ${REDIS_PASS}|" ${INSTALL_PREFIX}/etc/redis.conf
sed -i "s|^dir .*|dir ${INSTALL_PREFIX}/data|" ${INSTALL_PREFIX}/etc/redis.conf

Após a instalação, configure um serviço systemd para gerenciar o processo do Redis.


# /etc/systemd/system/redis.service
[Unit]
Description=Serviço Redis Key-Value Store
After=network.target

[Service]
User=redis
Group=redis
ExecStart=/opt/redis/bin/redis-server /opt/redis/etc/redis.conf --supervised systemd
ExecStop=/opt/redis/bin/redis-cli -a senha_segura_123 shutdown
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target

Gerenciamento de Configuração

As configurações principais do Redis residem no arquivo redis.conf. Parâmetros importantes incluem:

  • bind: Define quais andereços IP escutar.
  • protected-mode: Modo de segurança ativado por padrão.
  • maxmemory: Limite de memória para o servidor. Use CONFIG SET para alterar em runtime.

Exemplo de alteração dinâmica:


redis-cli -a senha_segura_123 CONFIG SET maxmemory 1gb

Persistência de Dados

O Redis oferece dois mecanismos principais de persistência:

RDB (Snapshot)

Cria um ponto de recuperação completo em um momento específico. Configure a política de salvamento automático:


# Salva se houver pelo menos 1 alteração de chave em 900 segundos
save 900 1
# Salva se houver pelo menos 10 alterações em 300 segundos
save 300 10

AOF (Append-Only File)

Registra cada operação de escrita recebida pelo servidor. Para ativar:


appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec  # Sincroniza a cada segundo

Uma abordagem híbrida (RDB + AOF) pode oferecer o melhor dos dois mundos em termos de velocidade de recuperação e integridade dos dados.

Estruturas de Dados e Comandos

Strings


# Definir e obter
SET username "joao_silva"
GET username

# Incremento atômico
INCR page_views
INCRBY user:123:score 50

# Definir com expiração (TTL)
SETEX session_token 3600 "valor_da_sessao"

Listas

Listas ordenadas de elemnetos.


LPUSH task_queue "tarefa_1" "tarefa_2"
RPOP task_queue  # Remove a primeira tarefa inserida (LIFO) ou use LPOP para FIFO
LRANGE task_queue 0 -1  # Listar todos os elementos

Sets

Coleções não ordenadas e únicas.


SADD user:100:tags "python" "redis" "backend"
SISMEMBER user:100:tags "redis"  # Verifica se o membro existe
SINTER tag:redis:users tag:python:users  # Interseção entre conjuntos

Sorted Sets

Sets onde cada membro tem uma pontuação associada para ordenação.


ZADD ranking 1500 "jogador_a" 2100 "jogador_b"
ZRANGE ranking 0 -1 WITHSCORES  # Do menor para o maior score
ZREVRANGE ranking 0 9  # Top 10, do maior para o menor

Hashes

Mapas de campos-valor, ideais para representar objetos.


HSET user:100 name "Maria" email "maria@exemplo.com" age 30
HGET user:100 email
HGETALL user:100  # Obter todos os campos e valores

Alta Disponibilidade e Escalabilidade

Replicação Mestre-Escravo

Configure nós escravos para replicar dados do mestre e fornecer leitura escalonada.


# No arquivo de configuração do nó escravo (redis.conf)
replicaof <ip_do_mestre> <porta_do_mestre>
masterauth "senha_do_mestre"
</porta_do_mestre></ip_do_mestre>

Sentinel

Sistema de monitoramento e failover automático que gerencia um conjunto de instâncias Redis.


# Exemplo de configuração do sentinel.conf
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel auth-pass mymaster "senha_do_mestre"
sentinel down-after-milliseconds mymaster 5000

Cluster

Implementação de sharding (particionamento) automático que permite distribuir dados através de múltiplos nós.

Para criar um cluster de teste com 6 nós (3 primários, 3 réplicas):


redis-cli --cluster create \
  192.168.1.101:6379 192.168.1.102:6379 192.168.1.103:6379 \
  192.168.1.104:6379 192.168.1.105:6379 192.168.1.106:6379 \
  --cluster-replicas 1

Os dados são distribuídos automaticamente entre os nós primários usando 16384 slots hash.

Tags: Redis nosql configuracao Banco de Dados em Memória replicação

Publicado em 6-26 21:01