Redis比MySQL快多少?Jmeter压测告诉你

在一些高并发场景中,通常我们会选择redis做缓存,防止所有请求同时发到DB中,造成响应速度急剧下降。众所周知,redis是一个高性能的key-value型内存数据库,它的速度会比mysql快很多,但是在具体的项目中会比mysql快多少呢?为了更直观的体现出差距,这篇文章中我用了Jmeter,一款apache的压力测试工具做了一个小的数据对比

测试思路:分别在mysql和redis中存入一条用户数据。提供两个测试接口,分别用来请求mysql和redis中的用户数据,用Jmeter压力测试工具模拟1000个请求同时请求某个接口

测试步骤:(Java,sql代码就不贴出来了,主要说明一下测试过程)

1.Jmeter配置1000个线程来同时访问,并设置访问的主机,端口号
Redis比MySQL快多少?Jmeter压测告诉你_第1张图片

​2.新建任务1:用来访问redis接口
Redis比MySQL快多少?Jmeter压测告诉你_第2张图片
3.新建任务2:用来访问mysql接口
Redis比MySQL快多少?Jmeter压测告诉你_第3张图片

一般情况下,衡量一个项目的性能,可以通过QPSTPS来体现,在Jmeter中,Throughput一列可认为是该任务的QPS。

QPS: 每秒钟处理完请求的次数;注意这里是处理完。具体是指发出请求到服务器处理完成功返回结果。QPS = 并发量 / 平均响应时间

每秒钟处理完的事务次数,一般TPS是对整个系统来讲的。一个应用系统1s能完成多少事务处理,一个事务在分布式处理中,可能会对应多个请求,对于衡量单个接口服务的处理能力,用QPS比较多。可以理解为每秒完成了多少事务(例如第秒生成了多少个订单)。

简单来说,100QPS表示这个项目1秒处理了100个请求

4.执行任务2,通过mysql访问用户数据,QPS:121

在这里插入图片描述

5.执行任务1,通过redis访问用户数据 OPS:790

在这里插入图片描述
性能差距:790/120 = 6.8

测试环境

华为云

1vCPUs | 2GB | s3.medium.2

Ubuntu 16.04 server 64bit

在这个小的测试中redis的QPS比mysql的高了7倍,也就是说redis的请求处理速度比mysql高了7倍。当然,实际redis的速度会快得多,根据不同机器、环境、业务代码,具体表现也不一样

​ (PS:这个测试可能存在一些不严谨的地方,主要用来直观地体现mysql与redis速度差距)
在LINUX环境中,以下命令可以测试redis的get,set性能

redis-benchmark -t set,get -n 100000 -q

在这里插入图片描述
可见,redis每秒的可以处理4W多个get或set请求

官方数据:

redis读的速度是 110000次/s(11 W次/s),写的速度是81000次/s(8.1W 次/s)

mysql未知(官方没有具体说明)

你可能感兴趣的:(Java,Web)