0

0

redis为什么用单线程?为什么那么快?

青灯夜游

青灯夜游

发布时间:2021-11-01 10:08:02

|

2326人浏览过

|

来源于掘金社区

转载

什么是redis的单线程?redis为什么用单线程?为什么单线程redis能那么快?下面本篇文章给大家分析分析,希望对大家有所帮助!

redis为什么用单线程?为什么那么快?

1.基本概念

  • 什么是redis的单线程(核心功能在单线程上,并不是所有功能)

    • redis的网络IO和键值对读写是由一个线程完成的(redis的核心服务)

    • redis的其他功能由额外线程完成

      • 持久化
      • 异步删除
      • 集群数据同步

【相关推荐:Redis视频教程

2.redis为什么用单线程

  • 多线程的开销

    • 使用多线程可以增加系统吞吐率(每个请求),增加系统扩展性

    • 无限的增加线程数,导致吞吐量下降

      • 被多线程同时访问共享资源,比如共享的数据结构
      • 为了保证线程安全,导致性能的牺牲
      • 粗粒度的锁导致所有串行,系统的吞吐率随着线程的增加而增加
  • 因此为了节省并发资源的管理,redis使用单线程,保证所有操作串行化

1.png

2.png

3.单线程的redis为什么快

  • redis大部分操作都在内存上+高效的数据结构
  • redis采用多路复用机制,在网络中处理大量客户端请求,实现高吞吐率

4.socket

  • socket通信过程(网络IO处理+键值对读写+网络IO处理)

    • SimpleKV 为了处理一个 Get 请求
    • 需要监听客户端请求(bind/listen)
    • 和客户端(代码)建立连接(accept)
    • 从 socket 中读取请求(recv)
    • 解析客户端发送请求(parse)
    • 根据请求类型读取键值数据(get)
    • 最后给客户端返回结果,即向 socket 中写回数据(send)
  • 潜在的阻塞点

    • accept() 未能成功建立连接时,会一直阻塞\

    • recv() 从客户端读取数据时,会一直阻塞\

      DaGaoPeng(大高朋网团购程序)
      DaGaoPeng(大高朋网团购程序)

      大高朋团购系统是一套Groupon模式的开源团购程序,开发的一套网团购程序,系统采用ASP+ACCESS开发的团购程序,安装超简,功能超全面,在保留大高朋团购系统版权的前提下,允许所有用户免费使用。大高朋团购系统内置多种主流在线支付接口,所有网银用户均可无障碍支付;短信发送团购券和实物团购快递发货等。 二、为什么选择大高朋团购程序系统? 1.功能强大、细节完善 除了拥有主流团购网站功能,更特别支

      下载

3.png

  • socket的非阻塞模式
  • 保证 Redis 线程,既不会像基本 IO 模型中一直在阻塞点等待,也不会导致 Redis 无法处理实际到达的连接请求或数据
  • Linux 中的 IO 多路复用机制

4.png

5.多路复用

  • Linux中的IO多路复用机制指一个线程处理多个IO流,select/poll

  • 在单线程下,同时存在监听多个套接字和已连接套接字

  • 具体实现

    • FD是多个套接字

    • Redis使用epoll机制,让内核监听套接字

    • Redis可以和多个客户端连接并处理请求,从而提升并发性

    • select/epoll提供了基于事件的回调机制,针对不同的事件调用对应的处理函数

      • 首先将事件放入事件队列,无需润徐请求是否实际发生,避免CPU资源浪费
      • 根据相应的事件执行响应的操作

5.png

6.总结

  • redis真的是单线程吗

    • 对网络 IO 和数据读写的操作采用了一个线程。
  • 为什么用单线程

    • 避免多线程开发的并发控制问题。
    • 多路复用的 IO 模型密切相关。
  • 单线程为什么这么快

更多编程相关知识,请访问:编程视频!!

相关专题

更多
php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

4

2025.12.31

视频文件格式
视频文件格式

本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

不受国内限制的浏览器大全
不受国内限制的浏览器大全

想找真正自由、无限制的上网体验?本合集精选2025年最开放、隐私强、访问无阻的浏览器App,涵盖Tor、Brave、Via、X浏览器、Mullvad等高自由度工具。支持自定义搜索引擎、广告拦截、隐身模式及全球网站无障碍访问,部分更具备防追踪、去谷歌化、双内核切换等高级功能。无论日常浏览、隐私保护还是突破地域限制,总有一款适合你!

7

2025.12.31

出现404解决方法大全
出现404解决方法大全

本专题整合了404错误解决方法大全,阅读专题下面的文章了解更多详细内容。

42

2025.12.31

html5怎么播放视频
html5怎么播放视频

想让网页流畅播放视频?本合集详解HTML5视频播放核心方法!涵盖<video>标签基础用法、多格式兼容(MP4/WebM/OGV)、自定义播放控件、响应式适配及常见浏览器兼容问题解决方案。无需插件,纯前端实现高清视频嵌入,助你快速打造现代化网页视频体验。

4

2025.12.31

关闭win10系统自动更新教程大全
关闭win10系统自动更新教程大全

本专题整合了关闭win10系统自动更新教程大全,阅读专题下面的文章了解更多详细内容。

3

2025.12.31

阻止电脑自动安装软件教程
阻止电脑自动安装软件教程

本专题整合了阻止电脑自动安装软件教程,阅读专题下面的文章了解更多详细教程。

3

2025.12.31

html5怎么使用
html5怎么使用

想快速上手HTML5开发?本合集为你整理最实用的HTML5使用指南!涵盖HTML5基础语法、主流框架(如Bootstrap、Vue、React)集成方法,以及无需安装、直接在线编辑运行的平台推荐(如CodePen、JSFiddle)。无论你是新手还是进阶开发者,都能轻松掌握HTML5网页制作、响应式布局与交互功能开发,零配置开启高效前端编程之旅!

2

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
进程与SOCKET
进程与SOCKET

共6课时 | 0.3万人学习

Redis+MySQL数据库面试教程
Redis+MySQL数据库面试教程

共72课时 | 6.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号