中间件之Redis第一篇概念

本文深入探讨Redis中间件,解释了Redis为何能以单线程运行并保持高速,详细介绍了IO多路复用(如select、poll和epoll)的工作原理,并分析了Redis的事件驱动机制和处理流程。同时,文章涵盖了Redis的数据结构、持久化策略(RDB和AOF)以及主从同步过程。
摘要由CSDN通过智能技术生成

跳表的实现原理

Redis 数据结构 | 小林coding

单线程的redis为什么速度那么快?

a. 单线程避免上下文的切换
b. 纯内存操作
c. 采用基于事件驱动的IO多路复用网络模型

什么是IO多路复用(IO Multiplexing)?

先提常见的IO模型

1. 同步阻塞BIO

在这里插入图片描述
应用程序读取数据的流程
1. 用户线程一直阻塞等待
2. 内核等待数据就绪
3. 内核空间将数据拷贝到用户空间

2. 同步非阻塞NIO

在这里插入图片描述
应用程序读取数据的流程
1. 用户线程非阻塞但是需要频繁的询问内核数据是否准备好
2. 内核等待数据就绪
3. 内核空间将数据拷贝到用户空间

异步非阻塞AIO

后续补充

IO多路复用一种同步IO模型

IO多路复用一种同步IO模型,单个进程/线程就可以同时处理多个IO请求。
在这里插入图片描述

1. 一个线程通过select可以管理多个IO事件
2. select返回的是就绪的IO事件
3. recfrom让就绪的IO事件通知内核复制数据到用户空间

Linux实现IO多路复用技术的三种方式,默认是epoll

select
  1. 轮询数组,判断是否就绪
  2. 1024限制
poll
  1. 采用链表的方式,其他与select一样
epoll

(返回哪个Socket就绪不用重新遍历判断是否就绪)

  1. epoll将文件描述符拷贝到内核空间后使用红黑树进行维护,同时向内核注册每个文件描述符的回调函数,当某个文件描述符可读可写的时候,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值