67、Redis线程模型,单线程快的原因

这篇具有很好参考价值的文章主要介绍了67、Redis线程模型,单线程快的原因。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、Redis线程模型

Redis基于Reactor模式开发了网络事件处理器,这个处理器叫做文件事件处理器file event handler。这个文件事件处理器,它是单线程的,所以 Redis 才叫做单线程的模型,它采用IO多路复用机制来同时监听多个Socket,根据Socket上的事件类型来选择对应的事件处理器来处理这个事件。可以实现高性能的网络通信模型,又可以跟内部其他单线程的模块进行对接,保证了 Redis 内部的线程模型的简单性。

文件事件处理器的结构包含4个部分:多个Socket,IO多路复用程席、文件事件分派器以及事件处理器(命令请求
处理器、命令回复处理器、连接应答处理器等)。

多个 Socket 可能并发的产生不同的操作,每个操作对应不同的文件事件,但是IO多路复用程序会监听多个Socket,会将 Socket 放入一个队列中排队,每次从队列中取出一个 Socket 给事件分派器,事件分派器把 Socket给对应的事件处理器。

然后一个 Socket 的事件处理完之后,IO多路复用程序才会将队列中的下一个 Soket 给事件分派器。文件事件分派器会根据每个 Socket 当前产生的事件,来选择对应的事件处理器来处理。

二、单线程快的原因

1)纯内存操作

2)核心是基于非阻塞的IO多路复用机制

3)单线程反而避免了多线程的频繁上下文切换带来的性能问题文章来源地址https://www.toymoban.com/news/detail-579727.html

到了这里,关于67、Redis线程模型,单线程快的原因的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Redis的线程模型

    1.Redis是单线程模型还是多线程模型? redis6.X版本之前,属于单线程模型,redis中监听客户端的连接,和读写数据的操作 都是由一个单线程来解决 的。 而redis6.X版本后,引入了 多线程 ,但是 只作用于 监听客户端的连接,读写数据的操作 还是由一个单线程 来解决,不会出现

    2024年02月15日
    浏览(39)
  • 3 redis线程IO模型

    IO (Input/Output,输入/输出)即数据的 读取 (接收)或 写入 (发送)操作,通常用户进程中的一个完整IO分为两阶段:用户进程空间–内核空间、内核空间–设备空间(磁盘、网络等)。IO有 内存IO 、 网络IO 和 磁盘IO 三种,通常我们说的IO指的是后两者。 LINUX中进程无法直接操

    2023年04月26日
    浏览(38)
  • Redis 6.0 多线程模型比单线程优化在哪里了

    Redis 6.0 引入了多线程模型,相比于单线程模型,带来了一些优化和改进。在这篇博客中,我们将探讨Redis 6.0多线程模型相对于单线程的优化之处。 并发处理能力提升: 多线程模型允许Redis同时处理多个客户端请求,从而提高了并发处理能力。在单线程模型中,Redis一次只能执

    2024年01月25日
    浏览(43)
  • 从IO多路复用到redis线程模型

    Blocking IO - 阻塞IO NoneBlocking IO - 非阻塞IO IO multiplexing - IO多路复用 signal driven IO - 信号驱动IO asynchronous IO - 异步IO 最传统的一种IO模型,即在读写数据过程中会发生阻塞现象。 当用户线程发出IO请求之后,内核会去查看数据是否就绪,如果没有就绪就会等待数据就绪,而用户线

    2024年02月07日
    浏览(38)
  • 不愧是阿里大牛珍藏的“redis深度笔记(全彩版)”这细节讲解,神了

    说到 Redis 相信对于我们这些程序员来说太熟悉了,Redis 凭借着自己超高的超高的性能、完美的文档、简洁易懂的源码和丰富的客户端库支持,很快就在国内的互联网市场占据了一席之地,得到了广大用户的一致好评,随着国内外使用 Redis 的大中小型互联网公司越来越多,可

    2024年02月08日
    浏览(38)
  • Redis学习指南(28)-Redis高性能特性之单线程模型

    Redis是一种高性能、非关系型的内存数据库,被广泛应用于缓存、消息队列、任务队列等场景。Redis之所以能够达到如此高的性能,其中一个重要的原因就是其采用了单线程模型。 Redis使用单线程模型指的是主要的工作线程只有一个,这个线程负责处理所有的客户端请求和对数

    2024年01月24日
    浏览(71)
  • Redis追本溯源(三)内核:线程模型、网络IO模型、过期策略与淘汰机制、持久化

    Redis在处理客户端请求时,通常使用单线程来进行读取、解析、执行和响应返回,因此被称为单线程应用。在4.0版本之前,这一描述是准确的。 单线程: 读取、解析、执行和响应返回。 从4.0版本开始,Redis开始使用后台线程来处理一些耗时的操作,如清理脏数据、释放超时连

    2024年02月15日
    浏览(47)
  • 使用go-llama.cpp 运行 yi-01-6b大模型,使用本地CPU运行,速度挺快的

    https://github.com/ggerganov/llama.cpp LaMA.cpp 项目是开发者 Georgi Gerganov 基于 Meta 释出的 LLaMA 模型(简易 Python 代码示例)手撸的纯 C/C++ 版本,用于模型推理。所谓推理,即是给输入-跑模型-得输出的模型运行过程。 那么,纯 C/C++ 版本有何优势呢? 无需任何额外依赖,相比 Python 代码

    2024年02月20日
    浏览(49)
  • 运筹说 第67期 | 动态规划模型的建立与求解

    通过前一期的学习,我们已经学会了动态规划的基本概念和基本原理。本期小编带大家学习动态规划模型的建立与求解。 动态规划模型的建立 一   概述 建立动态规划的模型,就是分析问题并建立问题的动态规划基本方程。 成功地应用动态规划方法的关键,在于识别问题的

    2024年01月16日
    浏览(33)
  • 关于并发编程与线程安全的思考与实践 | 京东云技术团队

    作者:京东健康 张娜 并发编程的意义是充分的利用处理器的每一个核,以达到最高的处理性能,可以让程序运行的更快。而处理器也为了提高计算速率,作出了一系列优化,比如: 1、硬件升级:为平衡CPU 内高速存储器和内存之间数量级的速率差,提升整体性能,引入了多

    2024年02月07日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包