一文讲解Redis为什么读写性能高以及I/O复用相关知识点 ...

打印 上一主题 下一主题

主题 871|帖子 871|积分 2613

Redis为什么读写性能高呢?

Redis 的速率⾮常快,单机的 Redis 就可以⽀撑每秒十几万的并发,性能是 MySQL 的⼏⼗倍。缘故原由主要有⼏点:
①、基于内存的数据存储,Redis 将数据存储在内存当中,使得数据的读写操作避开了磁盘 I/O。而内存的访问速率远超硬盘,这是 Redis 读写速率快的根本缘故原由。
②、单线程模子,Redis 利用单线程模子来处置惩罚客户端的请求,这意味着在任何时候只有一个下令在执行。这样就制止了线程切换和锁竞争带来的斲丧。
③、IO 多路复⽤,基于 Linux 的 select/epoll 机制。该机制答应内核中同时存在多个监听套接字和已毗连套接字,内核会一直监听这些套接字上的毗连请求大概数据请求,一旦有请求到达,就会交给 Redis 处置惩罚,就实现了所谓的 Redis 单个线程处置惩罚多个 IO 读写的请求。
三分恶面渣逆袭:Redis利用IO多路复用和自身事件模子
④、高效的数据结构,Redis 提供了多种高效的数据结构,如字符串(String)、列表(List)、聚集(Set)、有序聚集(Sorted Set)等,这些数据结构颠末了高度优化,可以大概支持快速的数据操作。
顺带再补充下I/O多路复用的知识

IO 多路复用是一种高效管理多个 IO 事件的技能,通过单线程监控多个文件描述符(fd),实现高并发的 IO 操作。
常见的 I/O 多路复用机制包罗 select、poll 和 epoll 等。
特性selectpollepoll文件描述符限定受 FD_SETSIZE 限定无穷定无穷定时间复杂度O(n)O(n)O(1)数据复制必要必要不必要工作方式线性扫描线性扫描事件通知内核支持所有 UNIX 系统所有 UNIX 系统Linux 2.6 及以上版本适用场景少量毗连中等毗连大量并发毗连 比如说你是一名数学老师,上课时提出了一个问题:“本日谁来证明一下勾股定律?”
同学小王举手,你就让小王回答;小李举手,你就让小李回答;小张举手,你就让小张回答。
这种模式就是 IO 多路复用,你只必要在讲台上等,谁举手谁回答,不必要一个一个去问。
有盐先生:IO 多路复用
Redis 就是利用 epoll 这样的 I/O 多路复用机制,在单线程模子下实现高效的网络 I/O,从而支持高并发的请求处置惩罚。
举例子说一下 I/O 多路复用?

假设你是一个老师,让 30 个门生解答一道标题,然后查抄门生做的是否正确,你有下面几个选择:


  • 第一种选择:按顺序逐个查抄,先查抄 A,然后是 B,之后是 C、D。。。这中间如果有一个门生卡住,全班都会被耽误。这种模式就比如,你用循环挨个处置惩罚 socket,根本不具有并发本领。
  • 第二种选择:你创建 30 个分身,每个分身查抄一个门生的答案是否正确。 这种类似于为每一个用户创建一个进程大概线程处置惩罚毗连。
  • 第三种选择,你站在讲台上等,谁解答完谁举手。这时 C、D 举手,体现他们解答问题完毕,你下去依次查抄 C、D 的答案,然后继续回到讲台上等。此时 E、A 又举手,然后去处置惩罚 E 和 A。
第一种就是壅闭 IO 模子,第三种就是 I/O 复用模子。
图片来源于网络:多路复用模子
Linux 系统有三种方式实现 IO 多路复用:select、poll 和 epoll。
比方 epoll 方式是将用户 socket 对应的 fd 注册进 epoll,然后 epoll 帮你监听哪些 socket 上有消息到达,这样就制止了大量的无用操作。此时的 socket 应该采用非壅闭模式。
这样,整个过程只在举行 select、poll、epoll 这些调用的时候才会壅闭,收发客户消息是不会壅闭的,整个进程大概线程就被充实利用起来,这就是事件驱动,所谓的 reactor 模式。
select、poll 和 epoll 的实现原理?

select 利用位图管理 fd,每次调用都必要将 fd 聚集从用户态复制到内核态。最大支持 1024 个文件描述符。
poll 利用动态数组管理 fd,突破了 select 的数量限定。
epoll 利用红黑树和链表管理 fd,每次调用只必要将 fd 聚集从用户态复制到内核态一次,不必要重复复制。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

农民

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表