Redis基准测试和影响性能因素

目录

基准测试

redis-benchmark

具体测试

影响Redis性能因素小结


      前面的日志中我们对Redis的部署进行了一些配置,如网络配置设置其socket监听队列的上限、安全配置通过bind命令和port命令把Reids绑定到安全的IP地址和端口上,还有内存淘汰策略的配置等。这些是除CPU性能和网络带宽之外我们能做的优化,那么在这些配置工作做好后,如何知道它是否能满足我们的需要?答案是可以对Redis进行基准测试,如果基准测试能达到我们对预期场景的需要,那么可以考虑部署上线,如果达不到要求,可能需要我们做些配置上的调整,或者升级更高性能的硬件了。

 

基准测试

         基准测试是对Redis性能进行定量的测试,并不关心业务的具体实现,测试的数据也不要求是真实的,可以是针对测试生成的测试数据,例如使用基准测试我们可以知道Redis每秒最多能够处理多少个请求,这也是我们基准测试的指标,QPS(每秒请求数),服务器在一秒内处理了多少个请求,这些可以自己在日志(log)中打印出来然后估计。

 

redis-benchmark

         基准测试我们可以使用Redis自带的工具:redis-benchmark,这也是主流的Redis性能测试工具,为什么这么说,因为看了下阿里云Redis和腾讯云Redis,腾讯云Redis使用的性能测试工具是redis-benchmark,阿里云Redis查了下也是基于redis-benchmark实现的测试工具。

https://help.aliyun.com/document_detail/26350.html

https://cloud.tencent.com/document/product/239/17952

上面是两家Redis的文档,从里面也可以看到性能指标为QPS。

       那么好,在使用redis-benchmark进行基准测试前,先来简单看看里面的一些参数,使用redis-benchmark –help命令查看:

      一些简单的如-h表示Redis主机地址、-p表示端口号、-s表示指定连接的服务地址(会覆盖掉-h和-p参数)等。重点看下面的,-c指定客户端的并发数量;-n指定发起的请求数;-d指定GET和SET操作的数据大小,单位为字节;-t可以指定需要测试的Redis命令,例如-t SET表示知道测试SET命令,-l表示一直循环进行基准测试;-P表示使用管道功能,通常情况下客户端一次请求只发起一个命令,使用管道后可以指定一次请求发起的请求数。

 

具体测试

         我们可以先对某个API,如SET命令进行基准测试,指定客户端数量为100,总共发起的操作数为100000,GET或SET操作数据大小为256字节:

      可以看到,SET操作处理速度是每秒49285个请求。这是客户端每次只发起一个命令,我们可以通过-P参数,使用管道让客户端每次发起多个命令,增大吞吐量来提高性能。在上面的命令后面加上-P 1000,让客户端一次请求发起1000个命令:

使用管道后,SET操作的处理速度提升到了每秒288184个请求。

       由于我是在一台主机上进行的基准测试,也就是说客户端和服务器端都在本机上,所以忽略掉了一个影响性能的指标—当前网络情况,在真实的场景下客户端和服务器端请求是要通过网络的,若遇到网络拥堵,性能肯定和上面的测试结果有很大出入,所以说我们应该先部署到真实应用的主机上,再进行基准测试,这样测出来的结果才贴近真实的场景。

 

影响Redis性能因素小结

         除了上面说的,因为我在一台主机上进行的基准测试,客户端和服务器端都在本机上外,还有一些影响Redis性能的因素,如:

  1. 如果Redis运行在VMWare上(没错就是我….),那么基准测试的结果也是有挺大影响的,因为这些虚拟化的操作在网络端会产生一些额外的系统开销,所以为了尽可能减少延迟,直接把Redis部署到物理主机上吧。
  2. Redis因为是单线程模型,所以对于单个核心性能更强劲和更大缓存的CPU,更适合Redis,在对小数据进行存取时差别不明显,在对大数据进行存取时其优势就能体现出来了。
  3. 网络是一个很重要的影响因素,Redis建立在TCP协议之上,使用Redis处理多个命令时如果每次都是发送、应答、发送、应答的方式,都需要客户端和服务器端进行一次数据发送,消耗的网络延迟不可忽视。我们可以使用管道(就是上面的-P参数)来一次发送多个命令,减少往返的次数,或者使用一些支持批量处理的命令,SADD、ZADD、LPUSH、RPUSH等,这些目前Redis都支持。又或者,使用Lua脚本,把你的命令都写进去,这样在服务器端就可以完成对数据的业务处理逻辑,不用等数据返回到客户端再处理。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值