美文网首页
Redis工作原理入门

Redis工作原理入门

作者: 华木公子 | 来源:发表于2019-07-31 16:52 被阅读0次

一 redis是单线程的

我个人理解的是,redis是内存数据库,本质上就是内存数据的读取和设置,不涉及任何额外的IO和复杂运算。而内存读取的逻辑要求的就是快。
回顾多线程的原因,可以知道多线程的目的是为了充分提高CPU的使用率,当进行IO等操作时,CPU就可以去做其他的运算,那么从业务上,把不同的任务进行多线程并发划分,就可以让CPU更有效率的完成需要计算的业务逻辑。
而redis本质上就是内存中的数据读取和设置,从架构上,多线程不适合,反而因为多线程的线程上下文切换,CPU还会耗费更多的资源。
所以首先确定一点,采用单线程是最适合redis的。

二 redis是NIO模型的

redis作为一个内存服务器,需要支持多个客户端的请求,因此,就需要对多个客户端的网络socket请求进行处理,这就涉及到网络的IO操作。同时redis本身也需要对不同的命令进行处理,针对不同数据类型设值,取值。所以就存在多IO应答和命令处理过程。这就用到了NIO(多路复用非阻塞IO)机制。redis基于NIO进行设计。
NIO底层单线程处理的:具体模型参见本人另一篇文章(https://www.jianshu.com/writer#/notebooks/38981229/notes/51642232
);

三 redis的线程模型

capture_20190729145426349.jpg
  • redis进程有一个线程处理器,叫文件事件处理器 FileEventHandler,它就是单线程的。
  • 前期通过NIO处理获取到待处理的请求(每个请求都会触发一个AE_READABLE事件),然后把请求压入队列中;
  • 有一个文件事件分派器调用对应处理器对请求进行处理;包括请求处理,连接应答,命令处理器等等;
  • 由于是单线程的,我觉得各个处理器类似与有一个指针指向某个处理器,比如指针指到连接处理器,文件事件分派器就调用连接处理器处理。连接处理器处理完后会把指针指到对应命令处理器,于是文件事件分派器就能调用对应命令处理器,。最后指针指向应答处理器,完成应答,然后指针又指向连接处理器。依次类推。

相关文章

  • Redis工作原理入门

    一 redis是单线程的 我个人理解的是,redis是内存数据库,本质上就是内存数据的读取和设置,不涉及任何额外的...

  • redis cluster环境搭建

    一、入门 为了更好地了解redis的源码和工作原理,花了两天时间把redis cluster的环境给搭建起来。主要...

  • 爬虫入门(6)-Scrapy和Redis的使用

    Scrapy中使用Redis可以实现分布式爬虫的抓取。 关于Redis的原理,目前还处于入门,展开不了太多。但是在...

  • Redis从入门到精通:初级篇

    Redis从入门到精通:初级篇 Redis从入门到精通:初级篇 平时陆陆续续看了不少Redis的文章了,工作中也一...

  • 16. Redis Cluster

    10. Redis Cluster 10.1 Redis Cluster工作原理 在哨兵sentinel机制中,可...

  • 一些挺不错的博客/学习网址

    Redis学习: 官方文档:redis中文网 基本入门:Redis入门视频教程-慕课网、Redis 教程 | 菜鸟...

  • flask入门

    Flask入门 Flask入门WEB工作原理Flask框架flask_script扩展蓝本(blueprint) ...

  • Redis(一)初识Redis

    本文主要包括 NoSQL入门、Redis环境搭建和Redis入门三个部分。 一 、NoSQL入门 NoSQL(no...

  • Redis线程模型

    彻底搞懂Redis的线程模型了解redis的单线程模型工作原理 文件事件处理器 Redis基于Reactor模式开...

  • 2 Redis入门介绍

    2 Redis入门介绍 2.1 入门概述 2.1.1 1是什么 Redis:REmote DIctionary S...

网友评论

      本文标题:Redis工作原理入门

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