简介
Redis(Remote Dictionary Server)是一种开源的内存型数据存储,通常被用作数据库缓存系统。 它广泛用于医疗卫生系统、物联网和金融服务等实时应用行业。 Redis具有高度可扩展性,可用于实时分析、缓存、发布/订阅应用程序和会话管理。
Redis是一种Key-Value的No SQL数据库,性能是Mysql的10-100倍;支持多种数据类型(String、Hash、List、set、zset...),支持通过CLI、API、GUI等方式读写。与SQL数据存储在磁盘不同,Redis数据在内存中。倚天ECS采用DDR5内存,可获得比DDR4高50%带宽,实现更高性能的读写性能。同时在超高并发下,物理核+大Cache设计比传统的Hyper thread的共享ALU和cache,可获得更好的性能。
架构和环境
我们使用 memtier_benchmark作为负载生成器和性能基准测试工具。 它是 Redis Labs 为 Redis 构建的开源高吞吐量基准测试工具。 memtier_benchmark 部署在单独的 ECS 实例上。
对于Redis服务器,我们在4xlarge实例部署了16个Redis进程,并组成Redis集群模式,测试拓扑如下。16个Redis进程通过绑核方式使其调度多个CPU上,充分发挥每个Core能力,部署架构如下
两种被测ECS实例类型配置如下。基准测试客户端使用了一个单独的G8y.16xlarge实例。
Redis软件版本和测试参数。
性能优化和测试结果
测试脚本
通过在倚天上启用Booster加速,包括XPS (Transmit Packet Steering)以及中断调优手段, Yitian 710 与同规格的 x86 的 ECS 实例相比,Redis 数据库的吞吐量性能优势高达 35% 。下表中显示的结果是 5 次连续测试运行的汇总结果。
Redis性能优化方案通过ECS Booster一键开启。在实例创建阶段,选择倚天实例G8y,选择Alinux操作系统,勾选加速选项“redis加速”即可。
采用Booster加速,可以大幅度提升性能Redis 在 G8y 和 G7 实例上的性能数据如下:
表2. (G8y vs. G7) Redis 吞吐量性能数据
优化前后的性能测试表格如下:
图3. (G8y vs. G7) Redis吞吐量性能优势
平台选择决策
为了帮助用户决策,我们还测试了Redis6在最新主流场景的性能,在多款ECS产品中对比性能见图
另外,第八代ECS支持eRDMA,有效减少内存拷贝,降低网络时延,提升吞吐量,能帮助Redis大幅度提升处理性能;下图为阿里某客户业务性能。
图5,R8y.xlarge,4c32g规格下Redis qps性能数据
· Redis:4、5、6、7版本在倚天上均可直接运行,优化后性能都具备性能优势。(其他OS请联系服务支持优化)
· Booster加速:默认对Alinux3环境加速,默认安装redis6(可自行更换版本)
· 实例推荐:鉴于Redis消耗内存容量大,建议使用R系列内存型实例;
· 不适用场景:vcpu资源部分闲置场景。比如x86场景下,2HT只使用1个进程,导致1HT闲置,如更换为ARM服务器性能不具备优势(只发挥50%物理核能力)
总结
Redis是数据库加速方案最流行开源软件。适合电商、网站、博客等应对突发、大流量访问,需要数千台的部署。与同规格的基于 x86 的 ECS 实例相比,Redis部署在基于 Yitian 710 的 ECS 上可获得超过30%吞吐量性能优势。成本方面基于倚天710的G8y实例售价比G7实例低23%,总性价比提高50%;按照相同算法,相对G8a,性价比为1.4倍左右。