- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
近乎所有与Java相关的面试都会问到缓存的问题,基础一点的会问到什么是二 八定律、什么是热数据和冷数据,复杂一点的会问到缓存雪崩、缓存穿透、 缓存预热、缓存更新、缓存降级等问题,这些看似不常见的概念,都与我们的缓 存服务器相关,一般常用的缓存服务器有Redis、Memcached等,而笔者目前最常用的也只有Redis这一种。
如果你在以前面试的时候还没有遇到过面试官问你《为什么说Redis是单线程的以及Redis为什么这么快!》,那么你看到这篇文章的时候,你应该觉得是一件 很幸运的事情!如果你刚好是一位高逼格的面试官,你也可以拿这道题去面试对 面望穿秋水”般的小伙伴,测试一下他的掌握程度。
好啦!步入正题!我们先探讨一下Redis是什么,Redis为什么这么快、然后在探讨一下为什么Redis是单线程的?
Redis 简介Redis是一个开源的内存中的数据结构存储系统,它可以用作:数据库、缓存和 消息中间件。
它支持多种类型的数据结构,如字符串(String),散列(Hash),列表(List),集合(Set),有序集合(Sorted Set或者是ZSet)与范围查询,Bitm叩s,
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)内存数据库的工作模式:
内存硬盘“banana”
看完上述的描述,对于一些常见的Redis相关的面试题,是否有所认识了,例如:
什么是Redis、Redis常见的数据结构类型有哪些、Redis是如何进行持久化的等。
二.Redis到底有多快?
Redis采用的是基于内存的采用的是单进程单线程模型的KV数据库,由C语言编写,官方提供的数据是可以到达100000+的QPS (每秒内查询次数)。
这个数据不比采用单进程多线程的同样基于内存的KV数据库Memcached差!
Requests per second
横轴是连接数,纵轴是QPS。此时,这张图反映了一个数量级,希望大家在面试 的时候可以正确的描述出来,不要问你的时候,你回答的数量级相差甚远!
H.Redis为什么这么快?
1、完全基于内存,绝大局部请求是纯粹的内存操作,非常快速。数据存在内存 中,类似于HashM叩,HashMap的优势就是查找和操作的时间复杂度都是。⑴;2、数据结构简单,对数据操作也简单,Redis中的数据结构是专门进行设计的;
3、采用单线程,防止了不必要的上下文切换和竞争条件,也不存在多进程或者 多线程导致的切换而消耗CPU,不用去考虑各种锁的问题,不存在加锁释放锁 操作,没有因为可能出现死锁而导致的性能消耗;4、使用多路I/O复用模型,非阻塞10;
5、使用底层模型不同,它们之间底层实现方式以及与客户端之间通信的应用协议不一样,Redis直接自己构建了 VM机制,因为一般的系统调用系统函数的 话,会浪费一定的时间去移动和请求;
以上几点都比拟好理解,下边我们针对多路I/O复用模型进行简单的探讨:
(1)多路I/O复用模型多路I/O复用模型是利用select、poll、epoll可以同时监察多个流的I/O事件 的能力,在空闲的时候,会把当前线程阻塞掉,当有一个或多个流有I/O事件 时,就从阻塞态中唤醒,于是程序就会轮询一遍所有的流(epoll是只轮询那些 真正发出了事件的流),并且只依次顺序的处理就绪的流,这种做法就防止了大 量的无用操作。
这里“多路”指的是多个网络连接,复用指的是复用同一个线程。
采用多路I/O复用技术可以让单个线程高效的处理多个连接请求(尽量减少
您可能关注的文档
最近下载
- 食品生产监督检查要点_培训讲座课件.pptx
- 变更工程施工方案申请(3篇).docx VIP
- 智慧方案智慧矿山整体解决方案(41页PPT).pptx VIP
- 舒曼声乐套曲《戒指在我手上》Op.42, No.4 (Du Ring an meinem Finger)声乐+钢琴伴奏谱 带歌词.pdf VIP
- ISO11898-2中文版完整文件.docx VIP
- 职业病知识培训职业健康检查课件.pptx VIP
- 2025版《煤矿安全规程》宣贯培训课件.pptx VIP
- 球磨机安全事故案例课件.pptx VIP
- 药物不良反应的识别与处理.pptx VIP
- T_CCMA 0113-2021 高空作业车 检查与维护规程.docx VIP
文档评论(0)