文档

Redis社区版性能白皮书

更新时间:

本章节介绍云数据库 Redis 版社区版性能测试的测试环境、测试工具、测试方法与测试结果。

测试环境

数据库

测试环境信息

说明

地域和可用区

华北3(张家口)地域,可用区A。

实例版本

Redis 6.0,6.0.2.5

实例架构

标准版(双副本)架构,不启用集群,详情请参见标准架构

实例规格

由于测试结果受规格影响较小,本次测试以4 GB(redis.shard.large.ce)规格为例,规格详情请参见Redis社区版实例规格

测试客户端

测试环境信息

说明

部署压测工具的设备

云服务器ECS实例,规格为ecs.g5ne.16xlarge,详情请参见实例规格族

地域和可用区

华北3(张家口)地域,可用区A。

操作系统

CentOS 7.2 64位。

网络

Redis实例为相同专有网络(VPC),且与Redis实例通过专有网络连接。

测试工具

使用开源Redis的redis-benchmark工具进行压测,它是Redis官方的性能测试工具,可以有效地测试Redis服务的性能。本次测试使用的redis-benchmark工具版本为7.2.0。

使用方法

在ECS实例下载Redis源代码,并且编译产生redis-benchmark文件,即可开始测试。安装方法请参见附录:安装redis-cli

例如测试SET命令的执行性能,测试命令示例如下(启动16个线程、256个连接、3000000个Key、Value取值范围为64字节):

./src/redis-benchmark -h r-bp1s02ae14mr****.redis.rds.aliyuncs.com -p 6379 -a testaccount:Rp829dlwa -n 3000000 -r 10000000  -c 256 -t set -d 64 --threads 16
表 1. 参数说明

参数

说明

-h

Redis实例的内网连接地址。具体操作请参见查看连接地址

-p

Redis实例的服务端口,默认为6379。

-a

Redis实例的密码。

说明

如果使用通过控制台创建的账号连接Redis,连接密码格式需为<user>:<password>。例如,账号名为admin,密码为Rp829dlwa,则连接Redis时的密码为admin:Rp829dlwa

-c

并发的连接数量。

-n

测试的总请求数量,可设置较大的值以持续压测。

-t

测试的命令,例如SETGET等。

-d

命令(SET等)所操作的值的数据大小,单位为字节(Byte)。

-r

使用的Key的随机范围,即使用多少个不同Key。

--threads

启动多线程压测,并指定线程个数。

说明

参数的更多信息,请参见redis-benchmark

测试结果

对包括SETGET等在内的十余种Redis基础命令进行性能测试并给出测试指标,且囊括了不同线程数、不同写入数据大小的场景。

测试指标

测试指标

说明

QPS

每秒处理的读写操作数,单位为次/秒。

Latency

操作的平均延迟分布,单位为毫秒(ms)。

99th Percentile Latency

99%操作延迟,指99%操作的最大延迟时间,单位为毫秒(ms)。例如该指标的值为0.5毫秒,表示99%的请求可以在0.5毫秒内被处理。

String数据结构

  • GET

    测试命令示例:

    ./src/redis-benchmark -h r-bp1s02ae14mr****.redis.rds.aliyuncs.com -p 6379 -a testaccount:Rp829dlwa -t get -d 16 --threads 4 -c 100 -n 3000000 -r 30000000

    测试结果:

    Value长度(字节)

    QPS(次/秒)

    Average Latency(毫秒)

    99th Percentile Latency(毫秒)

    16

    199653.94

    0.483

    0.959

    128

    187488.28

    0.499

    1.055

    256

    187195.81

    0.514

    1.015

    1024

    178826.91

    0.544

    1.071

    2048

    100677.90

    0.966

    1.487

  • SET

    测试命令示例:

    ./src/redis-benchmark -h r-bp1s02ae14mr****.redis.rds.aliyuncs.com -p 6379 -a testaccount:Rp829dlwa -t set -d 16 --threads 2 -c 150 -n 3000000 -r 30000000

    测试结果:

    Value长度(字节)

    QPS(次/秒)

    Average Latency(毫秒)

    99th Percentile Latency(毫秒)

    16

    133291.86

    1.070

    1.863

    128

    119779.61

    1.196

    2.039

    256

    107096.96

    1.341

    2.191

    1024

    84319.41

    1.701

    3.327

    2048

    54911.87

    2.676

    11.383

    说明

    由于该实例规格的最大带宽为96 MB/s,当Value长度为1024时,已达到网络带宽的最大值。

  • MSET

    测试命令示例:

    ./src/redis-benchmark -h r-bp1s02ae14mr****.redis.rds.aliyuncs.com -p 6379 -a testaccount:Rp829dlwa -t mset -d 16 --threads 2 -c 100 -n 3000000 -r 30000000

    测试结果:

    Value长度(字节)

    QPS(次/秒)

    Average Latency(毫秒)

    99th Percentile Latency(毫秒)

    16

    41120.11

    2.364

    5.167

  • INCR

    测试命令示例:

    ./src/redis-benchmark -h r-bp1s02ae14mr****.redis.rds.aliyuncs.com -p 6379 -a testaccount:Rp829dlwa -t incr --threads 2 -c 150 -n 3000000 -r 30000000

    测试结果:

    QPS(次/秒)

    Average Latency(毫秒)

    99th Percentile Latency(毫秒)

    146092.05

    0.978

    1.687

List数据结构

  • LPUSH

    测试命令示例:

    ./src/redis-benchmark -h r-bp1s02ae14mr****.redis.rds.aliyuncs.com -p 6379 -a testaccount:Rp829dlwa -t lpush -d 16 --threads 2 -c 100 -n 3000000 -r 30000000

    测试结果:

    Value长度(字节)

    QPS(次/秒)

    Average Latency(毫秒)

    99th Percentile Latency(毫秒)

    16

    153830.38

    0.623

    1.191

    128

    142619.44

    0.669

    1.239

    256

    122249.38

    0.782

    1.431

    1024

    92267.95

    1.082

    1.775

  • LPOP

    测试命令示例:

    ./src/redis-benchmark -h r-bp1s02ae14mr****.redis.rds.aliyuncs.com -p 6379 -a testaccount:Rp829dlwa -t lpop -d 16 --threads 2 -c 100 -n 3000000 -r 30000000

    测试结果:

    Value长度(字节)

    QPS(次/秒)

    Average Latency(毫秒)

    99th Percentile Latency(毫秒)

    16

    161908.36

    0.601

    1.143

    128

    155593.59

    0.622

    1.167

    256

    146106.27

    0.664

    1.239

    1024

    123492.37

    0.786

    1.407

  • RPUSH

    测试命令示例:

    ./src/redis-benchmark -h r-bp1s02ae14mr****.redis.rds.aliyuncs.com -p 6379 -a testaccount:Rp829dlwa -t rpush -d 16 --threads 2 -c 100 -n 3000000 -r 30000000

    测试结果:

    Value长度(字节)

    QPS(次/秒)

    Average Latency(毫秒)

    99th Percentile Latency(毫秒)

    16

    153594.11

    0.620

    1.135

    128

    142626.22

    0.668

    1.247

    256

    127448.07

    0.751

    1.327

    1024

    93583.30

    1.029

    1.703

  • RPOP

    测试命令示例:

     ./src/redis-benchmark -h r-bp1s02ae14mr****.redis.rds.aliyuncs.com -p 6379 -a testaccount:Rp829dlwa -t rpop -d 16 --threads 2 -c 100 -n 3000000 -r 30000000

    测试结果:

    Value长度(字节)

    QPS(次/秒)

    Average Latency(毫秒)

    99th Percentile Latency(毫秒)

    16

    168719.42

    0.576

    1.127

    128

    164122.77

    0.592

    1.143

    256

    157637.53

    0.611

    1.167

    1024

    128816.18

    0.755

    1.367

Set数据结构

  • SADD

    测试命令示例:

    ./src/redis-benchmark -h r-bp1s02ae14mr****.redis.rds.aliyuncs.com -p 6379 -a testaccount:Rp829dlwa -t sadd --threads 2 -c 150 -n 3000000 -r 30000000

    测试结果:

    QPS(次/秒)

    Average Latency(毫秒)

    99th Percentile Latency(毫秒)

    136134.67

    1.045

    1.735

  • SPOP

    测试命令示例:

    ./src/redis-benchmark -h r-bp1s02ae14mr****.redis.rds.aliyuncs.com -p 6379 -a testaccount:Rp829dlwa -t spop --threads 2 -c 150 -n 3000000 -r 30000000

    测试结果:

    QPS(次/秒)

    Average Latency(毫秒)

    99th Percentile Latency(毫秒)

    108053.59

    1.329

    2.383

Zset数据结构

  • ZADD

    测试命令示例:

    ./src/redis-benchmark -h r-bp1s02ae14mr****.redis.rds.aliyuncs.com -p 6379 -a testaccount:Rp829dlwa -t zadd --threads 2 -c 150 -n 3000000 -r 30000000

    测试结果:

    QPS(次/秒)

    Average Latency(毫秒)

    99th Percentile Latency(毫秒)

    86770.40

    1.654

    2.423

  • ZPOPMIN

    测试命令示例:

    ./src/redis-benchmark -h r-bp1s02ae14mr****.redis.rds.aliyuncs.com -p 6379 -a testaccount:Rp829dlwa -t zpopmin --threads 2 -c 150 -n 3000000 -r 30000000

    测试结果:

    QPS(次/秒)

    Average Latency(毫秒)

    99th Percentile Latency(毫秒)

    104286.16

    1.378

    2.127

Hash数据结构

  • HSET

    测试命令示例:

    ./src/redis-benchmark -h r-bp1s02ae14mr****.redis.rds.aliyuncs.com -p 6379 -a testaccount:Rp829dlwa -t hset -d 16 --threads 2 -c 150 -n 3000000 -r 30000000

    测试结果:

    Value长度(字节)

    QPS(次/秒)

    Average Latency(毫秒)

    99th Percentile Latency(毫秒)

    16

    121163.16

    1.184

    1.951

    128

    110905.73

    1.291

    2.023

    256

    105995.84

    1.347

    2.127

    1024

    76242.76

    1.900

    3.359

  • 本页导读 (1)
文档反馈