本文转载自磊哥测评
上期我比较了腾讯云和阿里云的MySQL数据库,文章发布之后引起了一些反响,有质疑数据的,也有希望了解更多细节的同学。其实一个数据库产品的好坏,不光是QPS、TPS这种吞吐量指标,其他特性如主从复制、灾备、稳定性、可视化管理等也起着重要作用,有兴趣的同学可以自己去体验一下,我也会逐步完善这些数据库测试。这期我们来看另一个常用的数据库:Redis。
提起Redis大家可能都比较熟悉,但如果问起Redis能做什么,大多数人的印象可能就是缓存。Redis是nosql数据库中比较流行的一种,它具有开源、支持网络、基于内存、单线程等特性。那么在哪些场景会用到Redis呢,主要是下面这么几类。
1.缓存、发布订阅、排行榜
这两年比较火热的直播,成千上万的弹幕在同一时刻发出来,需要排序和显示。礼物一秒几十刷,排行榜更新。基于内存、单线程的Redis就是为此类场景而生的。搜索关注“腾讯云数据库”官方微信立得10元腾讯云无门槛代金券,体验移动端一键管理数据库,学习更多数据库技术实战教程。
2.计数器
这两年火热的微博,明星结婚一条微博几百万赞,实时统计实时推送的热门排行,京东的月销榜单,上新排行。Redis提供的有序集合数据类构能实现各种复杂的排行榜应用。
3.分布式、队列
基于Redis实现的分布式锁、共享session、队列。
看完上面的应用介绍,相信大家对Redis的应用场景都有个大概的了解,闲话少说,接下来我就动手来做一下Redis测试。
Redis-benchmark是官方自带的Redis性能测试工具,可以有效的测试Redis服务的性能。关于Redis-benchmark的使用入门,大家可以自己搜一下。
这次数据库测试我买了腾讯云Redis4.0集群版。也在8核32G的CVM上进行了自建,分别作对比测试,下面是本次测试的详细配置。
测试对象 | Redis版本 | 内存 | 测试客户端 | 网络 |
---|---|---|---|---|
云Redis | 4.0 | 3*8G | 4核16GCVM*2 | 腾讯VPC |
自建Redis | 4.0 | 32G(Redis限制24G) | 4核16GCVM*2 | 腾讯VPC |
测试我使用两台腾讯云CVM分别连接云Redis和自建Redis,由于Redis集群版对片数有限制,买不到对应内存的集群版,我通过限制自建Redis的使用内存到24G来对齐两边的内存。
测试指令:redis-benchmark -hxxx -pxxx -axxx xxx-t set,get -r 10000000 -cxxx -n 10000000其中通过-c来调整线程数大小,测试命令为get、set。搜索关注“腾讯云数据库”官方微信立得10元腾讯云无门槛代金券,体验移动端一键管理数据库,学习更多数据库技术实战教程。
首先测试连通性:
然后使用redis-benchmark进行测试,两个客户端同时开始,QPS求和,延时取平均值:
下面我们就来看一下测试结果:
完爆了有木有,这里有同学可能有疑惑了?同样内存,云Redis能爆自建那么多?不科学啊。我也觉得不科学,显然这里的性能瓶颈并不是在内存上,而是卡在了别的地方如CPU。所以说自建Redis时需要考虑的问题很多,对于性能瓶颈的排查也比较困难。QPS并不是Redis唯一最重要的指标,下面我们来看更具参考意义的指标:延时
先给大家解释一下,Redis-benchmark提供了指令时延的分布,0.9999水位线表示百分之99.99的操作延时都低于某个时间,反映了数据库在测试时的总体延时。
测到这里,可能有些朋友要说了,从延时看,好像自建使用也还可以接受。那我就要跟大家讲讲我的感受了。
首先就是搭建Redis集群,光是为了在部署一个单机多节点的集群,笔者就翻遍了各种教程,修改配置文件、启动集群、同步测试,遇到的版本、未知错误的坑一大堆,实在是心累啊。更不用提自建遇到延时和性能问题时的排查和分析,有时恐怕需要有经验的DBA大神才能搞定,其部署和管理成本真心高。搜索关注“腾讯云数据库”官方微信立得10元腾讯云无门槛代金券,体验移动端一键管理数据库,学习更多数据库技术实战教程。
第二点,笔者在准备Redis测试的时候,在选择哪一个版本作为参考对象的时候居然选择困难了。为什么呢,因为选择实在是太多了!光是社区版引擎就分为三类:
· 单机版:支持单节点集群弹性变配,提供超高性价比,提供1GB - 60GB规格。
· 主从版:主从实时同步,主节点故障时系统自动秒级切换,从节点接管业务,全程自动且对业务无影响,主从架构保障系统服务具有高可用性,提供0.25GB - 60GB规格。
· 集群版:灵活的选择分片数量、分片容量以及副本数量,提供业务无感知的扩容和缩容服务,提供12GB - 4TB的规格,支持千万级QPS 性能。
单机、主从版提供最大内存到60G规格,缓存场景完全可以覆盖。对要求更高的场景使用集群版,最高提供到4TB!我不信邪的试了一下:
好吧,真的是4TB,此外还有高达6G的网络吞吐量,千万级QPS真的不在话下。
除此之外呢?
还有方便的系统监控:
还有方便的分片大小和数量调整,弹性扩缩容;有主从热备、自动容灾。这么多方便的特性加起来,价格是多少呢,笔者查了8*4G的Redis集群版包月的价格:
再来看看同样内存的CVM(8核32G),需要多少:
好吧,原来自建的成本也这么高!不得不说一句:带宽是真的贵啊!
到这里本次Redis测试就接近尾声了,其实本次测试的过程不够专业哈,无论是对自建Redis,还是对云Redis,想要测到性能上限,至少需要数台设备一起压测,不过即使这样,我们还是感受到了Redis的魅力。Redis本身并不复杂,一个小巧简单的Key-Value型数据库,却在当今的主流数据库中占据一席之地。天下武功唯快不破,大概就是这个道理吧。搜索关注“腾讯云数据库”官方微信立得10元腾讯云无门槛代金券,体验移动端一键管理数据库,学习更多数据库技术实战教程。
在这期测试中我还有一个很大的发现,那就是:购买云数据库绝不仅仅是购买了数据库本身,更重要的是购买了具有“云”的特性的服务,比如弹性伸缩、系统监控、数据迁移,用户在享受这些服务的同时却无需付出任何运维和部署的成本。所以,那些对Redis有刚需的同学们,就不要再硬撑着自建集群啦,上云之后,一身轻松。
下期,我们一起来看看MongoDB。
搜索关注“腾讯云数据库”官方微信立得10元腾讯云无门槛代金券,体验移动端一键管理数据库,学习更多数据库技术实战教程。