Redis: Teste de Desempenho do Redis

O teste de desempenho é uma forma importante de avaliar o desempenho do Redis. Esta lição aborda o uso do redis-benchmark para testes.

1. Introdução ao redis-benchmark

redis-benchmark é a ferramenta de teste de desempenho integrada do Redis que pode testar várias operações do Redis.

(1) Uso Básico

BASH
# Teste básico (padrão 100000 requisições, 50 clientes concorrentes)
redis-benchmark

# Especificar host e porta
redis-benchmark -h 127.0.0.1 -p 6379

# Especificar contagem de requisições e concorrência
redis-benchmark -n 100000 -c 100

(2) Parâmetros Comuns

Parâmetro Descrição Padrão
-h Endereço do host 127.0.0.1
-p Porta 6379
-n Número de requisições 100000
-c Número de clientes paralelos 50
-d Tamanho dos dados (bytes) 3
-k Usar keepalive 1
-q Saída silenciosa false
-t Comandos a testar todos
-P Tamanho do pipeline 1

2. Interpretando Resultados de Teste

▶ Exemplo de Saída

TEXT 📖 Somente leitura
====== SET ======
  100000 requisições concluídas em 1.23 segundos
  50 clientes paralelos
  3 bytes de carga útil
  keep alive: 1

99.00% <= 1 milissegundos
99.80% <= 2 milissegundos
100.00% <= 3 milissegundos
81300.81 requisições por segundo

====== GET ======
  100000 requisições concluídas em 1.15 segundos
  50 clientes paralelos
  3 bytes de carga útil
  keep alive: 1

99.00% <= 1 milissegundos
99.90% <= 2 milissegundos
100.00% <= 3 milissegundos
86956.52 requisições por segundo

(1) Métricas Principais

Métrica Descrição
requests per second QPS (Queries Per Second)
99.00% <= 1 milliseconds 99% das requisições concluídas em 1 ms
parallel clients Número de clientes concorrentes
payload Tamanho dos dados

3. Cenários Comuns de Teste

(1) Testando Operações SET

BASH
# Testar operação SET
redis-benchmark -t set -n 100000 -c 50

# Testar SET com pipeline
redis-benchmark -t set -n 100000 -c 50 -P 10

(2) Testando Operações GET

BASH
# Testar operação GET
redis-benchmark -t get -n 100000 -c 50

(3) Testando Comandos Específicos

BASH
# Testar comandos específicos
redis-benchmark -t set,get,incr,lpush,rpush,lpop,rpop,sadd,hset -n 100000 -c 50

(4) Testando Pipeline

BASH
# Usar pipeline (enviar comandos em lote)
redis-benchmark -t set -n 100000 -c 50 -P 10

# Comparar desempenho com e sem pipeline
redis-benchmark -t set -n 100000 -c 50 -P 1
redis-benchmark -t set -n 100000 -c 50 -P 10
redis-benchmark -t set -n 100000 -c 50 -P 100

(5) Testando Dados Grandes

BASH
# Testar com tamanho de dados grande
redis-benchmark -t set -n 100000 -c 50 -d 1024

# Testar diferentes tamanhos de dados
redis-benchmark -t set -n 100000 -c 50 -d 64
redis-benchmark -t set -n 100000 -c 50 -d 256
redis-benchmark -t set -n 100000 -c 50 -d 1024

4. Dicas de Otimização de Desempenho

(1) Usar Pipeline

Pipelining pode melhorar significativamente o desempenho reduzindo as viagens de ida e volta na rede:

BASH
# Sem pipeline
redis-benchmark -t set -n 100000 -c 50 -P 1
# Resultado: ~80000 QPS

# Com pipeline
redis-benchmark -t set -n 100000 -c 50 -P 10
# Resultado: ~200000 QPS

(2) Usar Comandos em Lote

Comandos em lote são mais eficientes que comandos individuais:

BASH
# Comandos individuais
redis-benchmark -t set -n 100000 -c 50
# Resultado: ~80000 QPS

# Comandos em lote (MSET)
redis-benchmark -t mset -n 100000 -c 50
# Resultado: ~150000 QPS

(3) Ajustar Configuração

BASH
# Ajustar memória máxima
redis-cli CONFIG SET maxmemory 256mb

# Ajustar conexões máximas de cliente
redis-cli CONFIG SET maxclients 10000

# Desabilitar persistência (para teste)
redis-cli CONFIG SET save ""
redis-cli CONFIG SET appendonly no

5. Referência de Desempenho Base

(1) Desempenho de Instância Única

Operação QPS (sem pipeline) QPS (pipeline P=10)
SET 80.000 200.000
GET 90.000 250.000
INCR 85.000 220.000
LPUSH 80.000 200.000
LRANGE (100) 30.000 80.000
💡 Observação: O desempenho real depende do hardware, ambiente de rede, tamanho dos dados e outros fatores.


6. Scripts de Teste Personalizados

(1) Usando Scripts Lua

BASH
# Criar um script de teste
cat > test.lua << 'EOF'
for i = 1, 100000 do
  redis.call('SET', 'key:' .. i, 'value:' .. i)
end
EOF

# Executar o teste
redis-cli --eval test.lua

(2) Usando Python

PYTHON
import redis
import time

r = redis.Redis(host='localhost', port=6379)

# Testar operação SET
inicio = time.time()
for i in range(100000):
    r.set(f'key:{i}', f'value:{i}')
fim = time.time()

print(f'SET: {100000 / (fim - inicio):.0f} QPS')

❓ Perguntas Frequentes

P Os resultados do redis-benchmark diferem da produção?
R Sim. redis-benchmark executa em um ambiente ideal. O desempenho real de produção é afetado por rede, concorrência, tamanho dos dados, etc.
P Como testo o desempenho do cluster Redis?
R Use redis-benchmark com parâmetros de nó específicos, ou use ferramentas de teste de cluster dedicadas.
P Qual tamanho de pipeline é recomendado?
R Tipicamente 10-100, dependendo do ambiente de rede e tamanho dos dados.

📖 Resumo


7. 📝 Atividades

  1. Teste básico: Use redis-benchmark para testar operações SET e GET
  2. Teste de pipeline: Compare desempenho com e sem pipelining
  3. Teste de otimização: Tente diferentes parâmetros de configuração e observe mudanças no desempenho

8. Próxima Lição

Na próxima lição, nós aprenderemos sobre Pipelining do Redis, entendendo os princípios e o uso do pipelining.

📝 Exercícios

  1. Prática: Execute os comandos apresentados nesta lição
  2. Experimentação: Teste variações dos comandos aprendidos
  3. Aplicação: Aplique os conceitos em um projeto prático
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%