gaussdb(for redis)与原生redis集群的性能对比-4008云顶国际网站

高斯redis官方博客 发表于 2021/04/15 15:19:24 2021/04/15
【摘要】 本文为gaussdb(for redis)和开源redis集群在x86架构下性能测试对比报告,分析测试结果,gaussdb(for redis)较开源redis集群可以提供更高的qps,更低的访问延迟,以及更低的数据存储成本。

【最新活动】企业级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

测试流程

测试环境准备

  1. 登录华为云:。
  2. 创建gaussdb(for redis)集群
    购买gaussdb(for redis)实例参考
  3. 创建开源redis集群
  4. 购买测试客户端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)的各方面优势如下:

  1. 性能优势
    分析性能测试结果,在相同测试条件下,gaussdb(for redis)的qps较开源redis集群提高了11%~19%,平均延迟和p99比redis集群降低了70%以上,p9999比redis集群降低了15%以上

  2. 抗写优势
    在数据量大于内存的写测试中,原生redis集群因内存限制而oom,gaussdb(for redis)依然可以提供不俗的性能服务。实际上,gaussdb(for redis)可用的存储空间是底层ssd大小决定的,相比原生redis集群抗写优势显著。

  3. 数据存储成本更低
    gaussdb(for redis)提供了高效的数据压缩服务,数据压缩测试结果显示,gaussdb(for redis)占用的存储空间只有开源redis集群的十分之一,相当于数据存储成本降低了10倍

【4008云顶国际集团的版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。