gaussdb(for redis)与原生redis集群的性能对比-4008云顶国际网站
【最新活动】企业级redis专场热销中!首月免费,包年仅需4折!
说明
本文为gaussdb(for redis)和开源redis集群在x86架构下性能测试对比报告,分析测试结果,gaussdb(for redis)较开源redis集群能提供更高的qps,更低的访问延迟,以及更低的数据存储成本。
测试方案
测试环境
华为云北京四环境,具体部署方式参照2.4章节拓扑图。
服务端资源配置
名称 | cpu | 内存 | 存储 | 数据库类型 | 价格(包月) |
---|---|---|---|---|---|
gaussdb redis | 4vcpu | 48g | 120gb | gaussdb(for redis) | ¥4,606.80 |
proxy redis | 48g(主) 48g(备) | 小于40g | 开源redis集群 | ¥4,874.88 |
客户端配置
测试执行机规格:
名称 | cpu | 内存 | 操作系统 |
---|---|---|---|
ecs虚拟机(2台) | 8vcpus | 16g | centos 6.9 64bit |
规格:通用计算增强型 | c6.2xlarge.2 | 8vcpus | 16gb
实例部署拓扑图
gaussdb(for redis)集群部署
开源redis集群部署
测试工具
测试工具 | 版本 | 下载地址 |
---|---|---|
memtier_benchmark | 1.3.0 |
测试流程
测试环境准备
- 登录华为云:。
- 创建gaussdb(for redis)集群
购买gaussdb(for redis)实例参考
- 创建开源redis集群
- 购买测试客户端ecs,安装memtier_benchmark
测试样例
string类型纯写测试
执行以下命令,测试string类型纯写的性能,并为读测试预置数据。
./memtier_benchmark -s ${redis_ip} -a ${password} -p ${redis_port} -c 20 -t 4 -n 1500000 --random-data --randomize --distinct-client-seed -d 1024 --key-maximum=1500000 --key-minimum=1 --ratio=1:0 --key-pattern=s:s --show-config
string类型纯读测试
执行以下命令,测试get的性能
./memtier_benchmark -s ${redis_ip} -a ${password} -p ${redis_port} -c 20 -t 4 -n 1500000 --random-data --randomize --distinct-client-seed -d 1024 --key-maximum=1500000 --key-minimum=1 --ratio=0:1 --key-pattern=s:s --show-config
string类型读写1:1测试
执行以下命令,测试读写1:1的性能
./memtier_benchmark -s ${redis_ip} -a ${password} -p ${redis_port} -c 20 -t 4 -n 1500000 --random-data --randomize --distinct-client-seed -d 1024 --key-maximum=1500000 --key-minimum=1 --ratio=1:1 --key-pattern=s:s --show-config
hash类型纯写测试
执行以下命令,测试hset的性能,并为下阶段读预置数据。
./memtier_benchmark -s ${redis_ip} -a ${password} -p ${redis_port} -c 20 -t 4 -n 1500000 --random-data --randomize --distinct-client-seed -d 1024 --key-maximum=1500000 --key-minimum=1 --command='hset __key__ field __data__' --command-key-pattern=s --command-ratio=1 --show-config
hash类型纯读测试
执行以下命令,测试hget的性能。
./memtier_benchmark -s ${redis_ip} -a ${password} -p ${redis_port} -c 20 -t 4 -n 1500000 --random-data --randomize --distinct-client-seed -d 1024 --key-maximum=1500000 --key-minimum=1 --command='hget __key__ field' --command-key-pattern=s --command-ratio=1 --show-config
hash类型读写1:1测试
执行以下命令,测试读写1:1的性能
./memtier_benchmark -s ${redis_ip} -a ${password} -p ${redis_port} -c 20 -t 4 -n 1500000 --random-data --randomize --distinct-client-seed -d 1024 --key-maximum=1500000 --key-minimum=1 --command='hset __key__ field __data__' --command-key-pattern=s --command-ratio=1 --command='hget __key__ field' --command-key-pattern=s --command-ratio=1 --show-config
说明: ${password}为创建数据库时设置的密码,${redis_ip},${redis_port}表示数据库的连接地址和端口号,测试使用并发数80,data_size:1024。
测试结果
性能测试
通过分析上表的数据,通过gaussdb(for redis)的测试结果和开源redis集群测试结果的比值,得到下表的对比数据。
大数据量写测试
进行一组数据量超过内存的写测试,开源redis集群在耗尽内存后会报错:server xxxxxxxxx:xxxx handle error response: -oom command not allowed when used memory > 'maxmemory’
相比之下,gaussdb(for redis)没有任何的影响,业务正常进行,以下为gaussdb(for redis)在数据量超过内存时的性能结果:
数据压缩测试
gaussdb(for redis)提供数据压缩服务,数据存储成本更低。预置一定数据量,查看gaussdb(for redis)和原生redis集群实际占用的存储空间。以下为预置的数据量和实际占用的存储空间:
结果分析
上述测试表明了gaussdb(for redis)的各方面优势如下:
-
性能优势
分析性能测试结果,在相同测试条件下,gaussdb(for redis)的qps较开源redis集群提高了11%~19%,平均延迟和p99比redis集群降低了70%以上,p9999比redis集群降低了15%以上。 -
抗写优势
在数据量大于内存的写测试中,原生redis集群因内存限制而oom,gaussdb(for redis)依然可以提供不俗的性能服务。实际上,gaussdb(for redis)可用的存储空间是底层ssd大小决定的,相比原生redis集群抗写优势显著。 -
数据存储成本更低
gaussdb(for redis)提供了高效的数据压缩服务,数据压缩测试结果显示,gaussdb(for redis)占用的存储空间只有开源redis集群的十分之一,相当于数据存储成本降低了10倍。
- 点赞
- 收藏
- 关注作者
评论(0)