# 01 Re
dis面试问题常见划分(6个部分)
1. Re
dis 的概念理解
2. Re
dis 基本数据结构详解
3. Re
dis 高并发问题策略
4. Re
dis 集群结构以及设计理念
5. Re
dis 持久化机制
6. Re
dis 应用场景设计
7. Re
dis学习路线图(xmind)

Re
dis学习路线图(xmind)
# 02 涉及到的面试题目如下
* Re
dis 的特点有哪些?
* Re
dis 支持的数据类型
* 为什么 Re
dis 需要把所有数据放到内存中?
* Re
dis 适用场景有哪些?
* Re
dis常用的业务场景有哪些?
* Mem*** 与 Re
dis 的区别都有哪些?
* Re
dis 相比 mem***d 有哪些优势?
* Re
dis常用的命令有哪些?
* Re
dis 为什么设计成单线程的?
*
一个字符串类型的值能存储最大容量是多少?
* Re
dis各个数据类型最大存储量分别是多少?
* Re
dis 持久化机制有哪些? 区别是什么?
* 请介绍一下 RDB, AOF两种持久化机制的优缺点?
* 什么是缓存穿透?怎么
解决?
* 什么是缓存雪崩? 怎么
解决?
* Re
dis支持的额Java客户端有哪些? 简单说明一下特点。
* 缓存的更新策略有几种?分别有什么注意事项?
* 什么是分布式锁?有什么作用?
* 分布式锁可以通过什么来实现?
* 介绍一下分布式锁实现需要注意的事项?
* Re
dis怎么实现分布式锁?
* 常见的淘汰算法有哪些?
* Re
dis 淘汰策略有哪些?
* Re
dis 缓存失效策略有哪些?
* Re
dis 的持久化机制有几种方式?
* 请介绍一下持久化机制 RDB, AOF的优缺点分别是什么?
* Re
dis 是单线程的吗?
* Re
dis 通讯协议是什么?有什么特点?
* 请介绍一下 Re
dis 的数据类型 SortedSet(zset) 以及底层实现机制?
* Re
dis 集群最大节点个数是多少?
* Re
dis 集群的主从复制模型是怎样的?
* Re
dis 如何做内存优化?
* Re
dis 事务相关命令有哪些?什么是 Re
dis 事务?原理是什么?
* Re
dis 事务的注意点有哪些?
* Re
dis 为什么
不支持回滚?
* 请介绍一下 Re
dis 集群实现方案
* 请介绍一下 Re
dis 常见的业务使用场景?
* Re
dis 集群会有写操作丢失吗?为什么?
* 请介绍一下 Re
dis 的 Pipeline (管道),以及使用场景
* 请说明一下 Re
dis 的批量命令与 Pipeline 有什么不同?
* Re
dis 慢
查询是什么?通过什么配置?
* Re
dis 的慢
查询修复经验有哪些? 怎么修复的?
* 请介绍一下 Re
dis 的发布
订阅功能
* 请介绍几个可能导致 Re
dis 阻塞的原因
* 怎么去发现 Re
dis 阻塞异常情况?
* Re
dis 的内存消耗
分类有哪些?内存
统计使用什么命令?
* 简单介绍一下 Re
dis 的内存管理方式有哪些?
* 如何设置 Re
dis 的内存上限?有什么作用?
* 什么是 bigkey? 有什么影响?怎么发现bigkey?
* 请简单描述一下 Je
dis 的基本使用
方法?
* Je
dis连接池
链接方法有什么优点?
* 冷热数据表示什么意思?
* 缓存命中率表示什么?怎么提高缓存命中率?
* 如何优化 Re
dis 服务的
性能?
* 如何实现本地缓存?请描述一下你知道的方式
* 请介绍一下 Spring 注解缓存
* 如果 AOF
文件的数据出现异常, Re
dis服务怎么处理?
* Re
dis 的主从复制模式有什么优缺点?
* Re
dis sentinel (哨兵) 模式优缺点有哪些?
* Re
dis 集群架构模式有哪几种?
* 如何设置 Re
dis 的最大连接数?查看Re
dis的最大连接数?查看Re
dis的当前连接数?
* Re
dis 的链表数据结构的特征有哪些?
* 请介绍一下 Re
dis 的 String 类型底层实现?
* Re
dis 的 String 类型使用 SSD 方式实现的好处?
* 设计一下在交易网站
首页展示当天最热门售卖商品的前五十名商品列表?
* **... ...**
**面试问题的答案解析太长,这边就不一一列举出来了,已经整理成如下所示的PDF文档,有需要的朋友可以文末领取!**

Re
dis面试问题解析
# 03 最后看看我自己整理的一份Re
dis学习笔记
* 为什么要用 re
dis /为什么要用缓存(高
性能、高并发)
* 为什么要用 re
dis 而不用 map/guava 做缓存?
* re
dis 常见数据结构以及使用场景分析(**String、Hash、List、Set、Sorted Set**)
* re
dis 内存淘汰机制(**
MysqL里有2000w数据,Re
dis中只存20w的数据,如何保证Re
dis中的数据都是热点数据?**)
* re
dis 持久化机制(**怎么保证 re
dis 挂掉之后再重启数据可以进行恢复**)
* Re
dis 常见异常及
解决方案(**缓存穿透、缓存雪崩、缓存预热、缓存降级**)
* 分布式环境下常见的应用场景(**分布式锁、分布式自增 ID**)
* Re
dis 集群模式(**主从模式、哨兵模式、Cluster 集群模式**)
* 如何
解决 Re
dis 的并发竞争 Key 问题?
* 如何保证缓存与
数据库双写时的数据一致性?
* **... ...**

我的Re
dis学习笔记
# 最后我们该如何学习?
**1、看视频进行系统学习**
这几年的Crud经历,让我明白自己真的算是菜鸡中的战斗机,也正因为Crud,导致自己技术比较零散,也不够深入不够系统,所以重新进行学习是很有必要的。我差的是系统知识,差的结构框架和思路,所以通过视频来学习,
效果更好,也更全面。关于视频学习,个人可以推荐去B站进行学习,B站上有很多学习视频,唯一的缺点就是免费的容易过时。
另外,我自己也珍藏了好几套视频资料躺在网盘里,有需要的我也可以
分享给你:

**2、读源码,看实战笔记,学习大神思路**
“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想
快速认知并学习架构,读源码是必不可少的。阅读源码,是
解决问题 + 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。
Spring源码深度解析:

Mybatis 3源码深度解析:

Re
dis学习笔记:

Spring Boot核心技术-笔记:

**3、面试前夕,刷题冲刺**
面试的前一周时间内,就可以开始刷题冲刺了。请记住,刷题的时候,技术的优先,算法的看些基本的,比如排序等即可,而智力题,除非是校招,否则一般不怎么会问。
关于面试刷题,我个人也准备了一套系统的面试题,帮助你举一反三:

只有技术过硬,在哪儿都不愁就业,“万般带不去,唯有业随身”学习本来就不是在课堂那几年说了算,而是在人生的旅途中不间断的事情。
人生短暂,别稀里糊涂的活一辈子,不要将就。
**资料领取方式:[点击蓝色传送门免费领取上述资料](https://docs.qq.com/doc/DSmxTbFJ1cmN1R2dB)**
文章内容中涉及到的Java面试题、源码文档,技术笔记等学习资料,均可以免费
分享给大家学习,只需你动动手多多
支持即可!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。