什么?Redis的QPS是MySQL的100倍?
创始人
2025-03-18 22:40:38
0次

 前言

原来总听别人说 Redis 读写性能优越适合做缓存,而 MySQL 则不行,那么你有真正了解过他们的读写差距吗?小匠同样也有这个疑问,到底他们的性能差多少?于是就有了这篇文章。

测试环境配置

Ubuntu Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz 8GB DDR3, 40GB SSD

Redis

进入 Redis[1] 官网,使用如下步骤安装。

 

  1. $ wget http://download.redis.io/releases/redis-5.0.5.tar.gz  
  2. $ tar xzf redis-5.0.5.tar.gz  
  3. $ cd redis-5.0.5  
  4. $ make 

启动服务

 

  1. $ src/redis-server 

运行 Redis 自带的基准测试工具,运行 set,get 1000000 次,1s 后退出并显示数据

 

  1. $ cd src    
  2. $ ./redis-benchmark -n 1000000 -t set,get -q 

数据显示如下,结果为 SET 48009,GET 56960。

 

  1. SET: 48009.98 requests per second  
  2. GET: 56960.59 requests per second 

当然这数据是没有使用 pipeline 的情况下,那么使用了 pipeline 又是什么场景呢?运行命令如下,运行 set,get 1000000 次,每次发送 200 个请求到服务端,1s 后退出并显示数据

 

  1. $ cd src    
  2. $ ./redis-benchmark -n 1000000 -t set,get -P 200 -q 

数据显示如下,结果为 SET 315258,GET 330797。这里你可以自行调整 -P 的数值,上升到 30000 上下保持平稳,所以如下数据是理论上最佳的测试数据。

 

  1. SET: 315258.53 requests per second  
  2. GET: 330797.22 requests per second 

好的,到这里我们就知道了,Redis 的大致数据为 50000 - 300000,那么我们赶紧看看 MySQL 呗?

MySQL

可前往 MySQL[2] 官网自行安装 MySQL,我的服务环境是 Ubuntu,所以我的安装命令如下

 

  1. $ sudo apt-get install mysql-server  
  2. $ sudo apt-get install mysql-client 

我测试 MySQL 的性能使用 sysbench[3] 工具,所以接下来我们需要安装一下。

 

  1. $ url -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.deb.sh | sudo bash  
  2. sudo apt -y install sysbench 

安装 sysbench 以后在 /usr/share/sysbench/ 目录下面会自带一些测试脚本,直接可以使用,我们只需要手动创建一个名为 benchmark 的 database,然后运行如下命令,准备数据->测试数据

 

 

  1. sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-user=root --mysql-password=root --mysql-db=benchmark --tables=10 --table-size=1000000 --events=100000000 --report-interval=10 --threads=4 --time=300 prepare  
  2. sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-user=root --mysql-password=root --mysql-db=benchmark --tables=10 --table-size=1000000 --events=100000000 --report-interval=10 --threads=4 --time=300 run 

 

运行完成以后数据如下

 

  1. [ 10s ] thds: 4 tps: 198.84 qps: 3982.73 (r/w/o: 2788.48/796.17/398.08) lat (ms,95%): 54.83 err/s: 0.00 reconn/s: 0.00  
  2. [ 20s ] thds: 4 tps: 174.38 qps: 3486.62 (r/w/o: 2440.73/697.12/348.76) lat (ms,95%): 52.89 err/s: 0.00 reconn/s: 0.00  
  3. [ 30s ] thds: 4 tps: 204.54 qps: 4089.94 (r/w/o: 2863.12/817.75/409.07) lat (ms,95%): 55.82 err/s: 0.00 reconn/s: 0.00  
  4. [ 40s ] thds: 4 tps: 214.98 qps: 4299.59 (r/w/o: 3009.71/859.92/429.96) lat (ms,95%): 49.21 err/s: 0.00 reconn/s: 0.00  
  5. [ 50s ] thds: 4 tps: 188.31 qps: 3767.98 (r/w/o: 2637.12/754.24/376.62) lat (ms,95%): 52.89 err/s: 0.00 reconn/s: 0.00  
  6. [ 60s ] thds: 4 tps: 228.00 qps: 4559.06 (r/w/o: 3191.64/911.41/456.01) lat (ms,95%): 49.21 err/s: 0.00 reconn/s: 0.00 

叮叮叮,是不是发现了什么?数据显示 MySQL 的 QPS 为 4000 左右浮动。

结论

此时一句话脱口而出重剑无锋,大巧不工,Redis 的优秀性能真的不是擂的,正如 《Redis in Action》中提到,Redis 的性能会是普通关系型数据库的 10 - 100 倍,如果你不是亲眼所见也不敢相信?那么你可以亲自动手试试喽?

PS: 当然并不是说因此就不用 MySQL 了,他们的特质不同决定了他们的场景,MySQL 的 InnoDB 引擎是的他有非常健全的事务系统,还是各领风骚哦。

 

 

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
只需三步,让你掌握阿尔法路由器... 请参照以下阿尔法路由器设置方法,通过浏览器进入及设置宽带路由器。经过这三个步骤的设置,基本上能够熟悉...
如何更省钱? 近期特价热门硒鼓... 如今激光打印设备已经成为商务或企业的绝对主力办公设备,但采购者往往忽视了激光打印设备所用的耗材,相对...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...