美文网首页互联网科技Java 杂谈Spring-Boot
什么?Redis 的 QPS居然是 MySQL 的 100 倍?

什么?Redis 的 QPS居然是 MySQL 的 100 倍?

作者: Java技术剑 | 来源:发表于2019-12-04 16:22 被阅读0次

前言

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

测试环境配置

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

Redis

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

启动服务

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

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

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

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

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

MySQL

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

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

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

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

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

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

运行完成以后数据如下

[ 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

[ 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

[ 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

[ 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

[ 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

[ 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 引擎是的他有非常健全的事务系统,还是各领风骚哦。

觉得文章不错就给小老弟点个关注吧!加入我的个人粉丝群(Java架构技术栈:644872653)即可领取一份Java面试宝典《Java核心知识点整理.pdf》和《Java208道面试题(含答案)》喔!

相关文章

  • 什么?Redis 的 QPS居然是 MySQL 的 100 倍?

    前言 原来总听别人说 Redis 读写性能优越适合做缓存,而 MySQL 则不行,那么你有真正了解过他们的读写差距...

  • redis的底层原理

    redis 为什么这么快 redis的速度 redis的qps可以达到10万左右(每秒请求数) redis 为什么...

  • 一次 redis.cpu=100%+、QPS=14W+ 的故障解

    故障描述 运维反馈说,redis 出现了 cpu100%+、QPS=14W+ 的情况,需要解决。 redis CP...

  • 牛皮了!Redis 6.0 如何实现大幅度的性能提升

    导读: Redis可以轻松支撑100k+ QPS,离不开基于Reactor模型的I/O Multiplexing,...

  • Redis使用详细教程

    一、Redis基础部分: 1、redis介绍与安装比mysql快10倍以上 *****************re...

  • redis 分布式

    为什么要用Redis集群 为什么要用集群? 1、性能Redis 本身的 QPS(官方数据:10万/秒) 已经很高了...

  • epoll

    传统的BIO BIO和QPS的关系: 1个线程的qps就是1. 100个线程的qps就是100 1000个线程的q...

  • springboot应用分库分表

    业界公认MySQL单表容量在1千万或者或100G以下是最佳状态,一般mysql单机差不多1000QPS,因为这时它...

  • Redis为什么这么快?

    Redis为什么这么快? 概述 Redis的QPS可达10w/s,可简单看下图所示 基于内存实现 内存的速度比磁盘...

  • Redis原理3-分布式

    为什么需要Redis 集群 性能 Redis 本身的QPS 已经很高了,但是如果在一些并发量非常高的情况下,性能还...

网友评论

    本文标题:什么?Redis 的 QPS居然是 MySQL 的 100 倍?

    本文链接:https://www.haomeiwen.com/subject/kbelgctx.html