不管你的编程语言是Python、Java、Go,还是PHP、Ruby等,你对Redis应该都比较熟悉的。
Redis在国内各大公司都很热门,比如阿里、腾讯、字节跳动、百度、美团、小米等,因为Redis优异的性能和方便的操作,redis号称支持并发11万读操作、并发8万写操作。
大部分程序员工作中都用到了redis,可是我工作了这么多年发现,身边的程序员,尤其是经常写业务代码的程序员,在实际工作中只会简单使用redis,对Redis缺乏一个整体的认识。
大厂面试官,甚至是一些中小型的互联网公司面试对于Redis的要求都很高,结果他们面试的时候一问到redis,基本都被面试官狠狠地虐,然后就是回家等通知…
平时不努力,面试弟中弟。
不管是在工作还是面试中,只有当你真正深入去了解了Redis,才会发现Redis的无穷妙用,让你在工作和面试中都如鱼得水。
我自己也想过把Redis的知识整理归纳,可始终没时间。直到我看到阿里的一位技术大牛整理的这份Redis学习笔记,囊括了Redis的优缺点、集群方案、数据类型、缓存异常、常用工具、内存相关、线程模型等,汇总了近3年来,阿里、字节跳动关于Redis的面试真题及答案解析。相信如果你能把这份资料吃透,面试中,Redis相关内容吊打面试官那是不在话下!
概述
- 什么是Redis
- Redis有哪些优缺点
- 为什么要用 Redis /为什么要用缓存
- 为什么要用 Redis 而不用 map/guava 做缓存?
- Redis为什么这么快
数据类型
- Redis有哪些数据类型
- Redis的应用场景
持久化
- 什么是Redis持久化?
- Redis 的持久化机制是什么?各自的优缺点?
- 如何选择合适的持久化方式
- Redis持久化数据和缓存怎么做扩容?
过期键的删除策略
- Redis的过期键的删除策略
- Redis key的过期时间和永久有效分别怎么设置?
- 我们知道通过expire来设置key 的过期时间,那么对过期的数据怎么处理呢?
内存相关
- MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据
- Redis的内存淘汰策略有哪些
- Redis主要消耗什么物理资源?
- Redis的内存用完了会发生什么?
- Redis如何做内存优化?
线程模型
- Redis线程模型
事务
- 什么是事务?
- Redis事务的概念
- Redis事务的三个阶段
- Redis事务相关命令
- 事务管理(ACID)概述
- Redis事务支持隔离性吗
- Redis事务保证原子性吗,支持回滚吗
- Redis事务其他实现
集群方案
- 哨兵模式
- 官方Redis Cluster 方案(服务端路由查询)
- 基于客户端分配
- 基于代理服务器分片
- Redis 主从架构
- Redis集群的主从复制模型是怎样的?
- 生产环境中的 redis 是怎么部署的?
- 说说Redis哈希槽的概念?
- Redis集群会有写操作丢失吗?为什么?
- Redis集群之间是如何复制的?
- Redis集群最大节点个数是多少?
- Redis集群如何选择数据库?
分区
- Redis是单线程的,如何提高多核CPU的利用率?
- 为什么要做Redis分区?
- 你知道有哪些Redis分区实现方案?
- Redis分区有什么缺点?
分布式问题
- Redis实现分布式锁
- 如何解决 Redis 的并发竞争 Key 问题
- 分布式Redis是前期做还是后期规模上来了再做好?为什么?
- 什么是 RedLock
缓存异常
- 缓存雪崩
- 缓存穿透
- 缓存击穿
- 缓存预热
- 缓存降级
- 热点数据和冷数据
- 缓存热点key
常用工具
- Redis支持的Java客户端都有哪些?官方推荐用哪个?
- Redis和Redisson有什么关系?
- Jedis与Redisson对比有什么优缺点?
其他问题
- Redis与Memcached的区别
- 如何保证缓存与数据库双写时的数据一致性?
- Redis常见性能问题和解决方案?
- Redis官方为什么不提供Windows版本?
- 一个字符串类型的值能存储最大容量是多少?
- Redis如何做大量数据插入?
- 假如Redis里面有1亿个key,其中有10w个key是以某个固定的已知的前缀开头的,如果将它们全部找出来?
- 使用Redis做过异步队列吗,是如何实现的
- Redis如何实现延时队列
- Redis回收进程如何工作的?
- Redis回收使用的是什么算法?
相信如果你能把阿里技术大牛整理的这份Redis学习笔记吃透,面试中,Redis相关内容吊打面试官那是不在话下!