- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
为什么说Redis是单线程的以及Redis为什么这么快!
近乎全部与Java相关的面试都会问到缓存的问题,基础一点的会问到什么是“二八定律”、什么是“热数据和冷数据”,简单一点的会问到缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题,这些看似不常见的概念,都与我们的缓存服务器相关,一般常用的缓存服务器有Redis、Memcached等,而笔者目前最常用的也只要Redis这一种。
假如你在以前面试的时候还没有遇到过面试官问你《为什么说Redis是单线程的以及Redis为什么这么快!》,那么你看到这篇文章的时候,你应当觉得是一件很侥幸的事情!假如你刚好是一位高逼格的面试官,你也可以拿这道题去面试对面“望穿秋水”般的小伙伴,测试一下他的把握程度。
好啦!步入正题!我们先探讨一下Redis是什么,Redis为什么这么快、然后在探讨一下为什么Redis是单线程的?
二、Redis简介
Redis是一个开源的内存中的数据结构存储系统,它可以用作:数据库、缓存和消息两头件。
它支持多品种型的数据结构,如字符串(String),散列(Hash),列表(List),集合(Set),有序集合(Sorted Set或者是ZSet)与范围查询,Bitmaps,Hyperloglogs 和地理空间(Geospatial)索引半径查询。其中常见的数据结构类型有:String、List、Set、Hash、ZSet这5种。
Redis 内置了复制(Replication),LUA脚本(Lua scripting), LRU驱动大事(LRU eviction),事务(Transactions) 和不同级别的磁盘长久化(Persistence),并通过 Redis哨兵(Sentinel)和自动分区(Cluster)供应高可用性(High Availability)。
Redis也供应了长久化的选项,这些选项可以让用户将本人的数据保存到磁盘上面进行存储。依据实际情况,可以每隔肯定时间将数据集导出到磁盘(快照),或者追加到命令日志中(AOF只追加文件),他会在执行写命令时,将被执行的写命令复制到硬盘里面。您也可以关闭长久化功能,将Redis作为一个高效的网络的缓存数据功能使用。
Redis不使用表,他的数据库不会预定义或者强制去要求用户对Redis存储的不同数据进行关联。
数据库的工作模式按存储方式可分为:硬盘数据库和内存数据库。Redis 将数据储存在内存里面,读写数据的时候都不会遭到硬盘 I/O 速度的限制,所以速度极快。
(1)硬盘数据库的工作模式:??(2)内存数据库的工作模式:?
看完上述的描述,对于一些常见的Redis相关的面试题,能否有所生疏了,例如:什么是Redis、Redis常见的数据结构类型有哪些、Redis是如何进行长久化的等。
三、Redis到底有多快
Redis接受的是基于内存的接受的是单进程单线程模型的?KV 数据库,由C言语编写,官方供应的数据是可以达到100000+的QPS(每秒内查询次数)。这个数据不比接受单进程多线程的同样基于内存的 KV 数据库 Memcached 差!有爱好的可以参考官方的基准程序测试《How fast is Redis?》(https://redis.io/topics/benchmarks)
?横轴是连接数,纵轴是QPS。此时,这张图反映了一个数量级,期望大家在面试的时候可以正确的描述出来,不要问你的时候,你回答的数量级相差甚远!
四、Redis为什么这么快
1、完全基于内存,绝大部分恳求是纯粹的内存操作,格外快速。数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间简单度都是O(1);
2、数据结构简约,对数据操作也简约,Redis中的数据结构是特地进行设计的;
3、接受单线程,避开了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有由于可能消灭死锁而导致的功能消耗;
4、使用多路I/O复用模型,非堵塞IO;
5、使用底层模型不同,它们之间底层实现方式以及与客户端之间通信的应用协议不一样,Redis直接本人构建了VM 机制 ,由于一般的系统调用系统函数的话,会铺张肯定的时间去移动和恳求;
以上几点都比较好理解,下边我们针对多路 I/O 复用模型进行简约的探讨:
(1)多路 I/O 复用模型
多路I/O复用模型是利用 select、poll、epoll 可以同时监察多个流的 I/O 大事的力量,在空闲的时候,会把当前线程堵塞掉,当有一个或多个流有 I/O 大事时,就从堵塞态中唤醒,于是程序就会轮询一遍全部的流(epoll 是只轮询那些真正发出了大事的流),并且只依次挨次的处理就绪的流,这种
您可能关注的文档
最近下载
- 北师大版八年级上册数学 第5章 二元一次方程 问题解决策略:逐步确定 教案.docx VIP
- 一年级上册数学第一单元试卷.doc VIP
- 地震数据分析软件:SeisComP二次开发_地震监测系统部署与维护.docx VIP
- 小红书种草营销师模拟试题及答案.docx VIP
- 音乐人吉他课.pptx VIP
- 隧道紧急停车带专项施工方案 - 生产安全.docx VIP
- 北师版八年级上册数学精品教学课件 第五章 二元一次方程组 ☆问题解决策略_逐步确定 (2).ppt VIP
- 北师版八年级上册数学精品教学课件 第五章 二元一次方程组 ☆问题解决策略_逐步确定.ppt VIP
- 问题解决策略:逐步确定 2025-2026学年北师大版数学八年级上册.pptx VIP
- 音乐人吉他课.docx VIP
文档评论(0)