Todos os produtos
Search
Central de documentação

Tair (Redis® OSS-Compatible):Whitepaper de desempenho de instâncias baseadas em SSD

Última atualização: Oct 10, 2026

Este documento descreve o ambiente de teste, as ferramentas, a metodologia e os resultados do benchmark de desempenho de instâncias Tair (Enterprise Edition) baseadas em SSD.

Ambiente de teste

Item

Descrição

Região e zona

Hangzhou Zone J

Arquitetura da instância

Arquitetura mestre-réplica padrão. Para obter mais informações, consulte Standard architecture.

Host de teste de carga

Instância Elastic Compute Service (ECS) do tipo ecs.c9i.8xlarge. Para obter mais informações, consulte Overview of instance families.

Tipos de instância testados

tair.localssd.c1m8.xlarge, tair.localssd.c1m8.2xlarge, tair.localssd.c1m8.with.proxy.xlarge (3 shards), tair.localssd.c1m8.with.proxy.2xlarge (3 shards)

O benchmark abrange dois cenários que representam extremos opostos no espectro de utilização de memória:

  • Memória maior que o volume de dados: A maior parte dos dados cabe na memória. A proporção entre memória e dados é de aproximadamente 7:1. Esse cenário representa um padrão de acesso com predominância de memória.

  • Volume de dados maior que a memória: Apenas uma parcela dos dados permanece em cache na memória, e a maioria das solicitações de leitura e gravação exige E/S de disco. A proporção entre memória e dados é de aproximadamente 1:4. Esse cenário representa um padrão de acesso com predominância de SSD.

Ferramenta de teste

O benchmark utiliza o YCSB, um framework de benchmark de banco de dados open source baseado em Java.

O código-fonte do YCSB foi modificado para suportar um parâmetro recordcount do tipo LONG e testar comandos de string do Redis. Para acessar o código-fonte modificado, consulte Código-fonte do YCSB.

Script de teste

O script a seguir executa testes de desempenho para o cenário em que o volume de dados supera a memória:

#!/bin/bash

ip=192.168.0.23
port=3100
timeout=30000
command_group=string
recordcount=640000000
run_operationcount=640000000
fieldcount=1
fieldlength=100
threads=64
load_sleep_time=600
run_sleep_time=60

echo "##################################### $command_group  ############################################"

# Load
./bin/ycsb load redis -s -P workloads/workloada \
  -p "redis.host=${ip}" -p "redis.port=${port}" \
  -p "recordcount=${recordcount}" -p "operationcount=${recordcount}" \
  -p "redis.timeout=${timeout}" -p "redis.command_group=${command_group}" \
  -p "fieldcount=${fieldcount}" -p "fieldlength=${fieldlength}" \
  -threads ${threads}
sleep ${load_sleep_time}

# Uniform-Read
./bin/ycsb run redis -s -P workloads/workloadc \
  -p "redis.host=${ip}" -p "redis.port=${port}" \
  -p "recordcount=${recordcount}" -p "operationcount=${run_operationcount}" \
  -p "redis.timeout=${timeout}" -p "redis.command_group=${command_group}" \
  -p "fieldcount=${fieldcount}" -p "fieldlength=${fieldlength}" \
  -p "requestdistribution=uniform" -threads ${threads}
sleep ${run_sleep_time}

# Zipfian-Read
./bin/ycsb run redis -s -P workloads/workloadc \
  -p "redis.host=${ip}" -p "redis.port=${port}" \
  -p "recordcount=${recordcount}" -p "operationcount=${run_operationcount}" \
  -p "redis.timeout=${timeout}" -p "redis.command_group=${command_group}" \
  -p "fieldcount=${fieldcount}" -p "fieldlength=${fieldlength}" \
  -p "requestdistribution=zipfian" -threads ${threads}
sleep ${run_sleep_time}

# Uniform-50%Read-50%Update
./bin/ycsb run redis -s -P workloads/workloada \
  -p "redis.host=${ip}" -p "redis.port=${port}" \
  -p "recordcount=${recordcount}" -p "operationcount=${run_operationcount}" \
  -p "redis.timeout=${timeout}" -p "redis.command_group=${command_group}" \
  -p "fieldcount=${fieldcount}" -p "fieldlength=${fieldlength}" \
  -p "requestdistribution=uniform" -threads ${threads}

Parâmetros

Parâmetro

Descrição

ip

Endereço IP da instância Tair

port

Porta de service da instância Tair

timeout

Tempo limite do comando. Unidade: ms

command_group

Tipo de dado a testar. Defina como string

recordcount

Número de registros carregados durante a fase de carga de dados

run_operationcount

Número de operações durante a fase de execução. Em ambos os cenários, defina este valor igual a recordcount.

fieldcount

Número de campos por registro. Defina como 1

fieldlength

Tamanho de cada campo em bytes. Defina como 100

threads

Número de threads do cliente YCSB. Varia conforme o tipo de instância.

Métricas de teste

Métrica

Descrição

QPS

Quantidade de operações de leitura e gravação processadas por segundo

Latência média

Latência média das operações de leitura ou gravação. Unidade: µs

Latência do percentil 99

Maior latência observada entre os 99% de operações mais rápidas. Unidade: µs. Por exemplo, um valor de 500 µs indica que 99% das operações foram concluídas em até 500 µs.

Resultados dos testes

Memória maior que o volume de dados

A proporção entre memória e dados é de aproximadamente 7:1. A maioria das solicitações é atendida diretamente pela memória.

Tipo de instância

Configuração do YCSB

Carga de trabalho

QPS

Latência média (µs)

Latência do percentil 99 (µs)

tair.localssd.c1m8.xlarge

recordcount=20.000.000

run_operationcount=20.000.000

threads=64

fieldlength=100

Load

41.960

1.522

5.523

Uniform-Read

110.867

574

2.515

Zipfian-Read

116.309

547

2.429

Uniform-50%Read-50%Update

53.116

Read: 1.094

Read: 4.025

Update: 1.310

Update: 4.655

tair.localssd.c1m8.2xlarge

recordcount=40.000.000

run_operationcount=40.000.000

threads=128

fieldlength=100

Load

64.378

1.985

6.091

Uniform-Read

205.584

620

2.279

Zipfian-Read

211.290

603

2.217

Uniform-50%Read-50%Update

80.796

Read: 1.406

Read: 4.631

Update: 1.756

Update: 5.495

tair.localssd.c1m8.with.proxy.xlarge (3 shards)

recordcount=60.000.000

run_operationcount=60.000.000

threads=192

fieldlength=100

Load

110.169

1.737

11.279

Uniform-Read

233.028

820

4.675

Zipfian-Read

235.489

811

4.655

Uniform-50%Read-50%Update

122.866

Read: 1.480

Read: 10.311

Update: 1.635

Update: 10.735

tair.localssd.c1m8.with.proxy.2xlarge (3 shards)

recordcount=120.000.000

run_operationcount=120.000.000

threads=384

fieldlength=100

Load

180.502

2.122

10.727

Uniform-Read

429.252

891

3.293

Zipfian-Read

438.533

872

3.365

Uniform-50%Read-50%Update

231.044

Read: 1.541

Read: 8.663

Update: 1.772

Update: 9.151

image

Volume de dados maior que a memória

A proporção entre memória e dados é de aproximadamente 1:4. Como a maioria das solicitações requer E/S de disco, a latência é superior à do cenário com predominância de memória apresentado acima.

Tipo de instância

Configuração do YCSB

Carga de trabalho

QPS

Latência média (µs)

Latência do percentil 99 (µs)

tair.localssd.c1m8.xlarge

recordcount=640.000.000

run_operationcount=640.000.000

threads=64

fieldlength=100

Load

32.596

1.961

8.135

Uniform-Read

50.227

1.272

3.753

Zipfian-Read

71.804

889

2.947

Uniform-50%Read-50%Update

27.063

Read: 2.306

Read: 8.199

Update: 2.416

Update: 8.535

tair.localssd.c1m8.2xlarge

recordcount=1.280.000.000

run_operationcount=1.280.000.000

threads=128

fieldlength=100

Load

50.608

2.526

9.071

Uniform-Read

78.931

1.619

4.371

Zipfian-Read

113.338

1.127

3.347

Uniform-50%Read-50%Update

47.564

Read: 2.598

Read: 8.471

Update: 2.778

Update: 8.959

tair.localssd.c1m8.with.proxy.xlarge (3 shards)

recordcount=1.920.000.000

run_operationcount=1.920.000.000

threads=192

fieldlength=100

Load

88.483

2.167

16.383

Uniform-Read

119.177

1.609

8.775

Zipfian-Read

156.079

1.228

7.663

Uniform-50%Read-50%Update

70.402

Read: 2.670

Read: 19.295

Update: 2.777

Update: 19.535

tair.localssd.c1m8.with.proxy.2xlarge (3 shards)

recordcount=3.840.000.000

run_operationcount=3.840.000.000

threads=384

fieldlength=100

Load

147.757

2.596

16.559

Uniform-Read

217.186

1.766

7.087

Zipfian-Read

282.698

1.356

6.131

Uniform-50%Read-50%Update

135.495

Read: 2.766

Read: 18.591

Update: 2.895

Update: 18.815

image

Referências

ESSD/SSD-based instances