Redis单线程
Redis是基于Reactor模式开发的网络事件处理器,这个处理器是单线程的,所
以redis是单线程的。
为什么它是单线程还那么快呢?
主要有以下几个原因:
一、纯内存操作
由于Redis是纯内存操作,相比于磁盘来说,内存就快得多,这个是Redis快的主要
原因。
二、多路复用I/O机制(NIO)
Redis采用的是多路复用非阻塞IO机制,即NIO。这允许Redis同时处理多个网络
连接和I/O流,提高了吞吐量。非阻塞I/O使得Redis能够高效地处理大量的客户端
连接和数据读写操作,而不会因为过多的I/O操作导致性能下降或线程阻塞。
三、单线程避免上下文切换
单线程反而没有了多线程上下文切换带来的损耗,已经资源竞争带来的复杂性。上
下文切换会消耗CPU资源并降低性能,而竞争条件可能导致数据不一致和性能下降
四、简单的数据结构
Redis的数据结构相对简单,这使得数据在内存中的访问更加连续和一致,有利于
充分利用CPU缓存,减少缓存失效的开销。
最后,值得注意的是Redis6.0引入了多线程。在Redis6.0之前,Redis>Redis6.0引入了多线程。在Redis6.0之前,Redis Server端处
理接受到客户端请求时,从Socket连接建立到指令的读取、解析、执行、写回都
是由一个线程来处理。这种方式在客户端请求比较多的情况下,单个线程的网络处
理效率较慢,导致客户端的请求处理效率较低。
Redis其实主要分成两个模块:网络IO处理模块和命令执行模块。引入多线程是为
了解决网络I/O模块效率问题,利用多核CPU的优势,提升网络I/O处理性能。而
命令执行模块还是使用单线程,从而继续保证了命令执行的原子性。
#app { color: rgba(127, 255, 170, 1) }
Redis单线程的更多相关文章
- Redis单线程原理
redis是以socket方式通信,socket服务端可同时接受多个客户端请求连接,也就是说,redis服务同时面对多个redis客户端连接请求,而redis服务本身是单线程运行. 假设,现在有A,B ...
- 为什么 redis 单线程却能支撑高并发
redis 和 memcached 有什么区别?redis 的线程模型是什么?为什么 redis 单线程却能支撑高并发? 这个是问 redis 的时候,最基本的问题吧,redis 最基本的一个内部原理 ...
- 理解Redis单线程运行模式
本文首发于:https://mp.weixin.qq.com/s/je4nqCIq6ARhSV2V5Ymmtg 微信公众号:后端技术指南针 0.概述 通过本文将了解到以下内容: Redis服务器采用单 ...
- 2.redis 和 memcached 有什么区别?redis 的线程模型是什么?为什么 redis 单线程却能支撑高并发?
作者:中华石杉 面试题 redis 和 memcached 有什么区别?redis 的线程模型是什么?为什么 redis 单线程却能支撑高并发? 面试官心理分析 这个是问 redis 的时候,最基本的 ...
- Redis 单线程却能支撑高并发 - 简书 https://www.jianshu.com/p/2d293482f272
小结: 1.在 I/O 多路复用模型中,最重要的函数调用就是 select,该方法的能够同时监控多个文件描述符的可读可写情况:2.Redis 服务采用 Reactor 的方式来实现文件事件处理器(每一 ...
- redis 单线程的理解
单线程模型 Redis客户端对服务端的每次调用都经历了发送命令,执行命令,返回结果三个过程.其中执行命令阶段,由于Redis是单线程来处理命令的,所有每一条到达服务端的命令不会立刻执行,所有的命令都会 ...
- redis 和 memcached 有什么区别?redis 的线程模型是什么?为什么 redis 单线程却能支撑高并发?
redis 和 memcached 有啥区别? redis 支持复杂的数据结构 redis 相比 memcached 来说,拥有更多的数据结构,能支持更丰富的数据操作.如果需要缓存能够支持更复杂的结构 ...
- 聊聊redis单线程为什么能做到高性能和io多路复用到底是个什么鬼
1:io多路复用epoll io多路复用简单来说就是一个线程处理多个网络请求 我们知道epoll in 的事件触发是可读了,这个比较好理解,比如一个连接过来,或者一个数据发送过来了,那么in事件就触 ...
- 【Redis破障之路】三:Redis单线程架构
众所周知,Redis是一个单线程架构的NoSQL数据库,但是是单线程模型的Redis为什么性能如此之高?这就是我们接下来要探究学习的内容. 1.Redis的单线程架构 1.1.Redis单线程简介 首 ...
- redis单线程为什么速度那么快?
1.redis是存储在内存上的,读写的话不会受到硬盘 I/O 速度的限制 如图: (1).硬盘数据库的工作模式: (2).内存数据库的工作模式 2.数据结构简单,对数据操作也简单 3.多路IO复用模型 ...
随机推荐
- 面向切面编程AOP[三](java AnnotationAwareAspectJAutoProxyCreator实现了什么功能)
前言 要查看一个类实现了什么功能,那么查看它继承的接口或者class即可知道,那么其到底继承了什么? 正文 AnnotationAwareAspectJAutoProxyCreator extends ...
- 手机配置IPV6
据可靠消息说今年7月份前大部分系统都得支持ipv6,之前也没当回事,突然说要全切,还得验证ipv6的支持情况. 网上找了一堆,发现都过时了,或者行不通,琢磨了一下把华为android的搞定了(流量模式 ...
- ES6中对象新增了哪些扩展?
一.属性的简写 ES6中,当对象键名与对应值名相等的时候,可以进行简写 const baz = {foo:foo}// 等同于const baz = {foo} 方法也能够进行简写 const o = ...
- 力扣443(java)-压缩字符串(中等)
题目: 给你一个字符数组 chars ,请使用下述算法压缩: 从一个空字符串 s 开始.对于 chars 中的每组 连续重复字符 : 如果这一组长度为 1 ,则将字符追加到 s 中.否则,需要向 s ...
- Spark如何对源端数据做切分?
简介: 典型的Spark作业读取位于OSS的Parquet外表时,源端的并发度(task/partition)如何确定?特别是在做TPCH测试时有一些疑问,如源端扫描文件的并发度是如何确定的?是否一个 ...
- OAM 深入解读:OAM 为云原生应用带来哪些价值?
导读:OAM 是阿里巴巴联合微软在社区推出的一款用于构建和交付云原生应用的标准规范,旨在通过全新的应用定义.运维.分发与交付模型,推动应用管理技术向"轻运维"的方向迈进,全力开启下 ...
- NopCommerce支持多种类型的数据库
本文章的内容是根据本人阅读NopCommerce源码的理解,如有不对的地方请指正,谢谢. 阅读目录 1.类结构关系图 2.分析 3.NopCommerce应用 类结构关系图 分析 NopObjectC ...
- LVGL学习资料
一.资料整理 官网:https://lvgl.io/ 使用手册: 官方的使用手册是英文版的,百问网将其翻译成中文版的文档.地址如下: 官方使用文档:https://docs.lvgl.io/maste ...
- 国外anonfiles网盘大文件下载器
各位注意了,这个网站很久以前是可以国内直接访问的,后来被墙了,但仍然可以使用代理下载,现如今,6天前大概2023年8月10号左右这个网站已经挂了,就是彻底不能用了,所有与之有关的东西比如网页,都是假的 ...
- 源码研习 — TVM中的IR设计与技术实现
一.关键问题 TVM中的 IR 是什么,架构设计上分几层? 解答:TVM的整体结构图如下: 概念上,分为两层:上层为面向前端组网的Relay IR, 下层为面向LLVM的底层 IR. 但从设计实现上, ...