摘要:与Redis Labs启动的多线压测试工具相比,Memtier_benchmark。
GaussDB(Forredis)是由Huawei Cloud推出的企业级别的Redis。它使用计算存储分离体系结构,并与Redis生态系统兼容。它是共享存储池多复制品的多副本,并支持持久存储以确保数据的安全性和可靠性。它具有高兼容性,高成本性能,高可靠性,高可靠性,弹性望远镜,高可用,可用,可用,可用,可用,可用,以及非毁灭性扩展。gaussDB(for redis)满足高读取和写作性能方案和批量需求扩展的业务需求,并广泛用于诸如E -Commerce,Games和Live Video等行业中对前缓存的大规模访问范围,它也可以负责将核心数据作为基础数据库的可靠存储。
接下来,我们使用Redis Labs启动的多线程压力测试工具,使用GaussDB(Forredis)和Native Redis之间的特征差异。
在华为云中,GaussDB(用于REDIS)实例是通过控制台购买的。测试实例的配置为8G容量,如下所示。
如屏幕截图所示,GaussDB(用于REDIS)提供了一个统一的负载平衡地址和端口,以促进应用程序访问高可用的redis服务。耐用的数据存储空间可视觉上显示数据和容量的数量。与高斯(Forredis)押金分开的架构,实例的能力和性能可以单独扩展:按需:
使用与GaussDB(REDIS)测试实例相同子网测试的ECS云服务器,部署memtier_benchmark测试环境
在GaussDB(用于REDIS)中安装数据
使用memtier_benchmark,如下所示,将数据命令加载到GaussDB(REDIS)中。每个线程上的单个值长度1000字节,12个线程和16个客户端,每个客户端都会发送100,000个请求,所有请求都是书面操作。
可以看出,已经执行了1920万次操作,平均行动为4.4W每秒,需要438秒。
使用redis-CLI登录实例查看dbsize(注意:由于使用MVCC机制,查询结果是密钥数的估计值,非真实时间的准确值。)
将数据安装到本地Redis
为了比较便利,我们在另外4核8G EC上部署了一个节点开源重新源。
仍然使用Memtier_benchmark的相同配置将数据插入原始REDIS
执行一段时间后,发生了大量错误
从redis日志中查看,执行RDB快照时存在问题。系统日志发生了OOM故障。
这实际上与本机Redis RDB快照处理方法有关。REDIS是一个持久性内存数据的过程,要使用抄写器,这将不可避免地导致更多的内存应用程序和使用。除了RDB快照外,本机REDIS还重写了AOF,新的CONG库将申请为了避免OOM的发生,操作系统通常会保留闲置内存的两倍,从而限制了内存资源的使用速率,从而导致大量浪费。
相比之下,GaussDB(用于REDIS)已丢弃了叉子机制以使结构更强大。从上面的测试中也可以看到,当导入相同数量的数据时,GaussDB的可用性和响应性能(对于REDIS)不是受任何影响。
为了测试它,我们分别将GaussDB(用于Redis)和天然重新延伸到16G。
GaussDB(用于REDIS)扩展至16G
对于GaussDB(用于REDIS),由于使用了被存款分隔的架构,分布式存储池是在线质量的,金额分配给用户使用它。没有数据复制过程,也不会它会影响业务使用。下一个,我们测试了在连续的RW操作方案GaussDB(for Redis)中使用Memtier_Benchmark的扩展过程,以查看它是否会影响业务的读写;
执行命令时执行扩展操作,检查测试结果并监视发现在扩展期间没有报告错误,而GaussDB(用于REDIS)对延迟做出了响应。
本地重新扩展到16G
本机REDIS实例受服务器内存的限制。要将扩展到16G,您只能首先升级ECS配置。需要重新启动服务器,短期业务不可用的问题。升级后,请使用Memtier_benchmark再次插入数据。
您根本无法将Cloud Server ECS配置再次升级到32G,并且在升级期间不可用REDIS服务再次不可用。此次升级后,我终于使用Memtier_bench Marks插入了数据。
让我们看一下高压下数据的场景,并直观地比较双方的表现。
将数据插入GaussDB(用于redis)
memtier_benchmark参数设置如下,所有这些设置都编写。SET的单个值长度50K字节,12个线程,每个线程上的16个客户端,每个客户端发出10,000个请求。插入的键约为192万,数据量约为96G,远大于实例的规格。
跑步一段时间后,我看到GaussDB(对于REDIS)的磁盘空间是100%的监视,该实例输入了读取模式并拒绝了新数据的撰写。检查发现总共有194,954个数据被引入。
对于GaussDB(Forredis),当容量关闭时,用户将收到警报通知。此时,只需单击控制台上的“磁盘显示”即可完成第二层的扩展,这对业务没有影响。
将数据插入本机Redis
本机redis通过配置限制了8G的内存大小,还执行以下命令以导入数据
报告一段时间后运行后的错误。
登录Redis以查看已编写的内存
您还可以设置数据消除策略,以确保Maxmemory-Policy设置的数据。如图所示,我们将淘汰策略设置为Allkeys-lru,也就是说,最近使用的密钥来满足插入数据的内存要求。
修改配置后,将其插入正常
总而言之,GaussDB(用于REDIS)对数据安全性有更多的关注,并使用“保证用户数据不要丢失”作为最高优先级。当数据已满时,它会自动进入读取模式以确保数据的安全性实例。通过控制台,它可以快速扩展,最大值可以减少对业务的影响。Nenative Redis提供了数据消除参数。用户可以独立选择。写入数据后,消除了数据。设计想法更偏向缓存的目的“可以随意丢弃数据”。如果您在重要的业务场景中使用它,则不希望丢失数据。建议选择GaussDB(Forredis)。
这次,我们使用memtier_benchmark分别测试了GaussDB(Redis)和本机Redis的设置操作。GaussDB(Redis)的8G规格成功地完成了数据加载的操作。本地redis出现异常异常并导致数据加载。本机重新列出通过叉过程复制数据,并且在RDB快照,AOF重写和添加库中,OOM异常很容易出现。Redis)放弃了叉子机制,这使得架构更强,服务的可用性更强。
在随后的扩展操作中,GaussDB(对于Redis)可以快速完成,并且对业务RW运营没有影响,而本地Redis扩展需要停止,并且在此期间不能正常使用业务。REDIS)快速扩张非常适合需要在生产环境中紧急扩展的场景,例如游戏开放和电子商务购买的普及远远超出了预期。从测试的角度来看,容量的扩展几乎已经达到了第二次级别,在扩展过程中对业务的阅读和写作没有影响。
此外,不管RDB或AOF的采用如何,更重要的本地Redis都有数据丢失的风险。GaussDB(用于REDIS)支持完整的数据解决。保证数据丢失。如果使用情况来满足KV查询的高性能,但也希望数据将被重视并且不会丢失。建议从天然的redis迁移到高斯(Gaussdb)(福雷迪斯)。
本文分享了来自华为云社区的作者:GaussDB数据库。