赞
踩
本文已收录于专栏
上千人点赞收藏,全套Redis高频面试题,大厂必备技能!
从面试官的角度分析,出这道题的目的是为了考察你对缓存的认知水平,以及结合缓存处理业务、改善架构的能力。这道题很明显是让你自由发挥,给了你引领面试官往自己最熟悉的知识点引导的机会,所以要尽可能的把握这次机会,给面试官一个好的印象。这道题聊得好,就是能深入交流个把小时了,如果是一面基本上能轻轻松松拿下。 但是千万不要上来就把话题聊死了,聊太浅了,那基本就是回去等通知了……
比如以下这种回答方式:
很多人会说这么回答也没错呀!没错是没错,但是总有一种给你机会不中用的感觉。
此时此刻面试官内心想发大致是这样的:
比较基础,应该没有很深入的了解过Redis
想问题停留在表面呀,估计平时就知道干活,没想过问题
给你自由发挥的机会,你不把握呀,看样子还是得我自己来,先问你几个分布式、持久化的问题看看水平怎么样,不行就这样了吧,后面还有好多人,等会要下班了。
如果不想硬抗下面试官的降龙十八掌,就应该主动挑起面试官的兴趣,并且把自己的格局(水平广度和深度)率先提升起来,将自己会的东西尽可能的多讲一些出来。
比如以下这种回答方式:
这个我的理解大致是这样的面试官!!
高性能:高性能一个很大的标准,就是响应时间快。Redis基于内存存储,CPU访问速度快,此外Redis对于数据结构的极致优化、内部线程模型和网络I/O模型的设计,决定了Redis是一个高性能存储数据库。唯一的缺点就是内存比较昂贵,通常情况下资源比较有限,因此对于非常大的数据缓存架构应该合理设计,我们通常不会在Redis中存放过大的数据,因为这样会导致Redis性能下降。
高并发:高并发通常指标有响应时间(Response Time),吞吐量(Throughput),每秒查询率QPS(Query Per Second)和并发用户数等,Redis虽然它是一个单进程单线程模型,但是Redis确实高并发业务场景下的一把利器,目前Redis的QPS已经能达到10万甚至是100万级别了,这是绝对的高并发。
高可用:Redis高可用主要体现在主从复制、sentinel(哨兵模式)和Cluster(集群模式)三者
这个我的理解大致是这样的面试官!!
Redis的单线程指的是执行命令操作使用单线程,Redis6.x发布之后使用多线程处理网络数据的读写和协议解析,Redis单线程这么快的原因主要有这些点:
采用I/O多路复用非阻塞模型处理客户端socket连接,能够极大的优化Redis服务端响应速度和效率,多路 I/O 复用技术可以让单个线程高效的处理多个连接请求,尽量减少网络 IO 的时间消耗。
基于内存存储,减少磁盘IO,读取速度快
Redis对内部数据结构做了极致的优化,使Redis的数据结构非常高效。并且在不同的数据量和存储内容采取不同的编码方式,这就涉及到了 Redis 底层的编码转换。比如list、hash、zset 三个键使用到了 ziplist 压缩列表编码,ziplist 是一种结构紧凑的数据结构,当某一键值中所包含的元素较少时,会优先存储在 ziplist 中,当元素个数超过某一值后,才将 ziplist 转化为标准存储结构,当然这一值是在redis.conf中可自定义配置。此外SDS的内存预分配、Hash结果Rehash中的渐进式hash、ZSet顺序基于SkipList存储,都优化了数据结构,使其更快。
Redis在执行命令操作使用单线程,无需考虑并发锁的设计,以及多线程带来的CPU上下文切换消耗,因此执行命令更快
这个我的理解大致是这样的面试官!!
Redis有5种基本数据类型它们分别是String、List、Hash、Set、ZSet;此外还有三种特殊数据类型Bitmaps、Geospatial、HyperLogLog
数据类型 | 简单描述 | 使用场景 |
---|---|---|
String | string(字符串)是Redis最简单也是使用最广泛的数据结构,它的内部是一个字符数组。String(字符串)是动态字符串,允许修改;它在结构上的实现类似于Java中的ArrayList |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。