美文网首页
Redis6.0 多线程的实现机制

Redis6.0 多线程的实现机制

作者: 小动乾坤 | 来源:发表于2024-03-02 22:51 被阅读0次

在 redis 6.0 以前,完整的 redis 线程模型是 主线程(1个)+ 后台线程(三个),三个后台线程分别处理:

关闭 AOF、RDB 等过程中产生的大临时文件

将追加至 AOF 文件的数据刷盘(一般情况下 write 调用之后,数据被写入内核缓冲区,通过 fsync 调用才将内核缓冲区的数据写入磁盘)

惰性释放大对象(大键的空间回收交由单独线程实现,主线程只做关系解除,可以快速返回,继续处理其他事件,避免服务器长时间阻塞)

Redis 6.0之后,Redis 正式在核心网络模型中引入了多线程,也就是所谓的 I/O threading,至此 Redis 真正拥有了多线程模型。一般来说,一个正常的客户端请求会经历 建立连接、IO就绪监听/读、命令执行、IO写等一系列操作。

主线程负责接收建立连接请求,获取 socket 放入全局等待读处理队列

主线程处理完读事件之后,通过Round Robin 将这些连接分配给这些IO线程。

主线程阻塞等待IO线程读取socket

主线程通过单线程的方式执行请求命令,请求数据读取并解析完成,但并不执行回写 socket

主线程阻塞等待 IO 线程将数据回写 socket 完毕

Redis 的多线程部分只是用来处理网络数据的读写和协议解析,执行命令仍然是单线程顺序执行。

相关文章

  • Redis各版本特性

    Redis6.0 多线程IO Redis 6引入多线程IO,但多线程部分只是用来处理网络数据的读写和协议解析,执行...

  • Redis 新特性6.0

    Redis6.0新版本在五月初重磅发布,我们可以清晰地发现Redis6.0新版本引入了多线程。相信大家一定都十分好...

  • iOS面试题--网络多线程

    一、多线程的底层实现? 1>线程:Mach是第一个以多线程方式处理任务的系统,因此多线程的底层实现机制是基于Mac...

  • Python 3 多线程编程

    本文主要基于python 3.5实现多线程编程 1. 创建多线程 2. 多线程间的同步,lock机制 3. que...

  • 应用程序

    NSRunloop的实现机制及在多线程总如何使用 NSRunloop是iOS消息机制的处理模式 1.NSRunlo...

  • Redis6.0多线程

    Redis Threaded IO Redis 6.0开始支持多线程,Redis分主线程和IO线程,IO线程只用于...

  • iOS面试题整理(三)

    1、NSRunLoop的实现机制,及在多线程中如何使用? NSRunLoop是IOS消息机制的处理模式 1.NSR...

  • iOS面试题锦集(六)——应用程序

    1. NSRunLoop的实现机制,及在多线程中如何使用? NSRunLoop是iOS消息机制的处理模式 NSRu...

  • java 多线程总结篇4——锁机制

    在开发Java多线程应用程序中,各个线程之间由于要共享资源,必须用到锁机制。Java提供了多种多线程锁机制的实现方...

  • JAVA锁机制

    在开发Java多线程应用程序中,各个线程之间由于要共享资源,必须用到锁机制。Java提供了多种多线程锁机制的实现方...

网友评论

      本文标题:Redis6.0 多线程的实现机制

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