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.
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.
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
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 |
Interpretando Resultados de Teste
Exemplo de Saída
TEXT
====== 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
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 |
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
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
Referência de Desempenho Base
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.
Scripts de Teste Personalizados
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
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
- redis-benchmark é a ferramenta de teste de desempenho integrada do Redis
- Métricas principais: QPS, percentis de latência
- Pipelining pode melhorar significativamente o desempenho
- Comandos em lote são mais eficientes que comandos individuais
- O desempenho real depende de hardware, rede, tamanho dos dados, etc.
📝 Atividades
- Teste básico: Use redis-benchmark para testar operações SET e GET
- Teste de pipeline: Compare desempenho com e sem pipelining
- Teste de otimização: Tente diferentes parâmetros de configuração e observe mudanças no desempenho
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.



