栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

redis面试篇

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

redis面试篇


前言

本篇是整理自己遇到或看到关于redis相关的面试题,答案仅供参考。


`提示:写博客是自己对知识梳理,目前是写给自己看,算是自己学习后的作业,也是为了养成一个良好的习惯。

一、基础篇
redis 为什么那么快?
  1. Redis是单线程模型,没有上下文切换的开销;
  2. 简单的数据类型,时间复杂度都是O(1);
  3. 数据都在内存中,计算快;
  4. 采用了多路复用机制使其在网络IO操作中能并发处理大量的客户端请求,实现高吞吐率。

为什么说redis是单线程?
	Redis是单线程主要是指 Redis的网络IO和键值对读写是由一个线程来完成的,
这也是Redis对外提供键值存储服务的主要流程。

既然redis是单线程为什么redis 6.0要改成多线程?
	这个官网有原话,大概就是因为redis所有的操作都在内存中,则CPU不是redis瓶颈,随着
科技发展内存也不再那么昂贵,那么redis主要性能问题就是在单线程的IO同步阻塞问题,则在6.0时
对于持久化、异步删除、集群数据同步等同步阻塞功能支持了多线程处理,解决同步阻塞问题。

什么是IO多路复用?redis是那种reactor的模式?
	IO多路复用就是通过一种机制,一个线程可以监听多个描述符(socket),
一旦某个描述符就绪,就通知程序(handler)进行相应的读写操作。
	redis是单线程的reactor的设计模式,具体请看下图:
	

二、缓存问题篇 1.经典缓存问题
缓存穿透问题
	场景:缓存中没有数据,DB中也没有数据,请求直接打在DB上。
	方案:布隆过滤器;加强接口的校验,过滤掉无效的请求;
		闪电缓存,设置短时间的过期key,key为请求唯一标识,值为null。
		
缓存击穿问题
	场景:一般是热key刚好过期时,同时有大量请求直接打在了DB上。
	方案:热key数据不设置过期时间;在数据层做互斥锁。
	
缓存雪崩问题
	场景:缓存大面积失效,导致大量的请求直接打在DB上;
	方案:缓存集中过期:将过期时间用随机数打散;服务宕机:采用高可用集群模式;服务做熔断降级保护

缓存污染问题
	场景:热key和其他key没有分开,在高并发时会存在新的缓存将热key缓存淘汰掉,从而导致的缓存污染
	方案:热key分开存放,保证缓存不被污染;淘汰策略由LRU关注于访问时间改为LFU关注于访问频率。
2.缓存一致性问题
缓存和DB一致性问题
	场景:保证缓存和DB数据一致性问题
	方案:最终一致性--延迟双删,保证最多在延迟时间内数据不一致,具体的看下图的分析;
		 强一致性--读写串行,这种虽然保证了强一致性但是违背了使用缓存的初衷,不推荐。
	但是在实际开发中用得最多的还是懒加载模式。

三、性能优化篇
	关于性能优化的一些问题我的上一篇已经有详细从 网络IO、内存利用率、单线程的同步阻塞等
多个维度思考、分析并给出了相关的方案,具体请参考我之前写 redis优化的思考。
	相关问题有以下:
	1. redis性能瓶颈在那?如何优化?
	2. bigkey问题,如何探测bigkey,有哪些方案?
	3. redis如何节约内存?

可以看一下以后这张图加强你对redis相关问题的思维导向。

redis优化的思考

四、集群篇
谈谈常见redis集群有哪些?各自解决问题?
	主从模式,关注于数据备份容灾问题,保证数据的高可靠,异常时需要人工接入;
	哨兵模式,关注的是服务的高可用,即异常时自动切换主从;
	切片模式(cluster),关注的是高性能,数据分片存储,支持横向扩展。

redis Cluster集群中,突然宕机了一台会发生什么?
	1. 如果半数以上 Master 处于关闭状态那么整个集群处于不可用状态。
	2. 关闭任意一对主从节点会导致部分(大约为整个集群的1/3)失败。
	3. 关闭任意一主,会导致部分写操作失败,是由于从节点不能执行写操作,
		在Slave升级为Master期间会有少量的失败。
	4. 关闭从节点对于整个集群没有影响。
总结

本来只是想写一下常见面试题,但是写着写着之前列举的大纲就变了,这个就不定期的更新补充吧,如果发现以上内容有问题请告知我,谢谢!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/763217.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号