redis是单线程的吗?为什么执行速度这么快?
1、基于内存存储实现
我们都知道内存读写是比在磁盘快很多的,Redis基于内存存储实现的数据库,相对于数据存在磁盘的MySQL数据库,省去磁盘I/O的消耗
2、redis使用了多路IO复用的线程模型,一个线程监控多个IO流
3、单线程模型
Redis是单线程模型的,而单线程避免了CPU不必要的上下文切换和竞争锁的消耗。也正因为是单线程,如果某个命令执行过长(如hgetall命令),会造成阻塞。Redis是面向快速执行场景的数据库。,所以要慎用如smembers和lrange、hgetall等命令。
Redis 6.0 引入了多线程提速,它的执行命令操作内存的仍然是个单线程。
Redis 6 中的多线程 主要在处理 网络 I/O 方面,对网络事件进行监听,分发给 work thread 进行处理,处理完以后将主动权交还给 主线程,进行 执行操作,当然后续还会有,执行后依然交由 work thread 进行响应数据的 socket write 操作
4、虚拟内存机制
Redis直接自己构建了VM机制 ,不会像一般的系统会调用系统函数处理,会浪费一定的时间去移动和请求。
Redis的虚拟内存机制是啥呢?
虚拟内存机制就是暂时把不经常访问的数据(冷数据)从内存交换到磁盘中,从而腾出宝贵的内存空间用于其它需要访问的数据(热数据)。通过VM功能可以实现冷热数据分离,使热数据仍在内存中、冷数据保存到磁盘。这样就可以避免因为内存不足而造成访问速度下降的问题
redis是单线程的吗?为什么执行速度这么快?相关推荐
- Redis是单线程的,为什么还会这么快?
近段时间在看面试题,看到了这个问题的时候我一下就来了兴致,所以找资料深入研究了一下. 首先,我们先要去了解Redis是什么? 一.Redis简介 Redis是一个开源的内存中的数据结构存储系统,它可以 ...
- 定时器执行速度越来越快
执行定时器前先清除!! 每个 setTimeout 产生的任务会直接 push 到任务队列中:而 setInterval 在每次把任务 push 到任务队列前,都要进行一下判断(看上次的任务是否仍在队 ...
- 计算机哪种语言处理速度最快,哪种高级编程语言的执行速度最快?
满意答案 18815979p 2019.03.05 采纳率:58% 等级:11 已帮助:7908人 回答时间2019年下半年 仅限高级语言 排名由前到后 性能 C Rust C++ Ada Ja ...
- 目前 计算速度最快的计算机系统是,目前计算机执行最快速度是多少
目前计算机执行最快速度是多少以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 目前计算机执行最快速度是多少 2013年6月 ...
- JavaScript代码优化(下载时间和执行速度优化)
JavaScript代码的速度被分成两部分:下载时间和执行速度. 下载时间 Web浏览器下载的是js源码,因此所有长变量名和注释都回包含在内.这个因素会增加下载时间.1160是一个TCP-IP包中的字 ...
- java基础巩固-宇宙第一AiYWM:为了维持生计,Redis基础Part6(Redis的应用场景、Redis是单线程的速度还快、Redis线程模型:Reactor模式、事件、发布订阅、管道)~整起
PART1-1:为什么Redis是单线程的 Redis单线程是指: Redis的网络IO和键值对读写是由一个线程来完成的.这也是 Redis 对外提供键值存储服务的主要流程.Redis的其他功能,比如 ...
- 为什么redis是单线程的以及为什么这么快?
官网的说法 我们先来认真看一下官网的说法.翻译过来大意如下: CPU并不是您使用Redis的瓶颈,因为通常Redis要么受内存限制,要么受网络限制.例如,使用在一般Linux系统上运行的流水线Redi ...
- Redis是单线程为什么还那么快?
Redis为什么还那么快 基于内存 Redis完全基于内存,绝大部分请求是纯粹的内存操作,Redis将数据存储在内存中,读写数据的时候不会受到硬盘I/O速度的限制(内存速度为什么比硬盘快?),类似 ...
- Redis 属于单线程还是多线程?不同的版本有什么区别?
Redis 是普及率最高的技术之一,同时也是面试中必问的一个技术模块,所以从今天开始我们将从最热门的 Redis 面试题入手,更加深入的学习和了解一下 Redis. 我们本文的面试题是 Redis 属 ...
最新文章
- python写完程序保存_Python学习笔记——文件处理
- python好学吗 小木虫-25行Python代码完成人脸识别
- js获取当前Frame在父页面中的id
- UVA dp题目汇总
- webclient无法获取html文件,C# WebClient获取网页源码的方法
- CSS 相邻选择器(七)
- 数据集:RD支出、GDP和能源消耗
- uniapp封装request
- MySQL数据库实操教程(24)——用户管理
- word中怎样输入 包含 真包含 不等于 等集合符号
- python操作符是什么意思_如何使用python操作符**与*?有什么区别?
- python 对中文文件求交集、并集、差集
- 女性最容易出轨的8种职业
- 短视频App系统开发方案-短视频源码开发
- Field accountDao in com.mdxl.service.AccountService required a bean of type 'com.mdxl.dao.MbAccountD
- 微软与纳斯达克开展合作将区块链产品整合至纳斯达克服务中
- 最大全1子矩阵的两种解法(例题:City Game HDU - 1505)
- 联想计算机的未来发展,联想表示:未来PC主营业务继续实现跨越式发展
- 什么是离散事件模拟(DES)
- android usb 共享,Android通过USB共享无线上网