Redis为什么这么快

概述

据Redis官方的测试,Redis可以达到100000以上的QPS
在这里插入图片描述本文主要探究,它为什么能这么快

原因概述

  1. Redis是完全基于内存的数据库
  2. 处理网络请求使用的是单线程,避免了不必要的上下文切换和锁的竞争维护。
  3. 使用了I/O多路复用模型。

完全基于内存

为什么要用完全呢。因为像mysql这样的成传统关系型数据库是索引文件存储来内存,数据文件存储在硬盘的,那么硬盘的性能和瓶颈将会影响到数据库。

  1. 硬盘型数据库工作模式:
    在这里插入图片描述
  2. 内存型数据库工作模式:

在这里插入图片描述
本身内存和硬盘的读写方式不相同导致了它们在读写性能上的巨大差异。

单线程

需要注意的是,这里的单线程指的是,Redis处理网络请求的时候只有一个线程,而不是整个Redis服务是单线程的。

单线程处理的好处

单线程处理也就是常说的串行处理,它和多线程处理各有优劣,不能一概而论。在Redis中由于是基于内存的数据库,它处理单个读写请求的速度非常快,若使用的是多线程在任务调度和线程维护上的消耗远大于处理请求的时间,这样会造成资源的浪费。

I/O多路复用模型

  • 传统多进程并发模型: 每监听到一个Socket连接就会分配一个线程处理
  • 多路复用模型: 单个线程,通过记录跟踪每一个Socket连接的I/O的状态来同时管理多个I/O流。
    这里的I/O指的是网络I/O,多路指的是多个网络连接,复用指的是复用一个线程

结合Redis:

  1. 在Redis中的I/O多路复用程序会监听多个客户端连接的Socket
  2. 每当有客户端通过Socket流向Redis发送请求进行操作时,I/O多路复用程序会将其放入一个队列中。
  3. 同时I/O多路复用程序会同步有序、每次传送一个任务给处理器处理。
  4. I/O多路复用程序会在上一个请求处理完毕后再继续分派下一个任务。(同步)

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值