0%

Redis HGET Benchmark

使用redis-benchmark工具对redis集群进行压测

redis-benchmark工具对于redis cluster支持并是不特别好,需要使用{tag}来写入指定node,相关用法在这pr中。

但是使用{tag}测试后不好删除数据,并且根据业务需要,关注的是单Hash单Node下的性能表现,所以最后测试时,直接连接了测试key所在的node,避免了事后清除数据的麻烦。

根据测试结果,可以看出,使用Pipeline的情况下Redis吞吐量能提升一倍有余

在不使用pipeline的情况下猜测是网络开销占用了过多CPU,但具体是iowait还是其他因素造成仍需分析

此外AWS在Redis7/7.1上支持了(增强型IO多路复用)[https://docs.aws.amazon.com/zh_cn/AmazonElastiCache/latest/red-ug/supported-engine-versions.html#redis-version-7.0]可以很大程度上增强多客户端连接时的性能。

AWS Node Type

缓存节点类型 vCPU 内存 网络性能
cache.m6g.large 2 6.38 GiB 高达 10GB

redis version: 6.2

Benchmark Result

1. with pipeline

command:

1
redis-benchmark -h <host> -p 6379 -l -q -P 16 --threads 6 hget benchmark_hash_key __rand_int__

result:

1
2
Engine CPU:57.5%
RPM:23757040

1. without pipeline

command:

1
redis-benchmark -h <host> -p 6379 -l -q -c 80 --threads 10 hget benchmark_hash_key __rand_int__

result:

1
2
Engine CPU:84%
RPM:10815595