Redis 是互联网技术架构在存储系统中使用得为广泛的中间件,也是中高级后端工程师技术面试中面试官喜欢问的工程技能之一,特别是那些优秀的互联网公司,通常要求面试者不仅仅掌握 Redis 基础用法,还要理解 Redis 内部实现的细节原理。
这份手册分为分为基础和应用篇、原理篇、集群篇、拓展篇、源码篇共 5 大块内容。基础和应用篇讲解对读者来说有价值的内容,可以直接应用到实际工作中;原理篇、集群篇让开发者透过简单的技术表面看到精致的底层世界;拓展篇帮助读者拓展技术视野和夯实基础,便于进阶学习;源码篇让高阶的读者能够读懂源码,掌握核心技术!
需要的小伙点赞文章,关注我之后添加小助理vx:bjmsb2020 即可获取!
Redis应用篇
分布式锁(分布式锁、超时问题、可重入性)
延时队列(异步消息队列、队列空了怎么办?队列延迟、空闲连接自动断开、锁冲突处理、延时队列的实现、进一步优化)
位图(基本使用、统计和查找、魔术指令bitfield)
HyperLogLog(使用方法、pfadd这个pf是什么意思?pfmerge适合什么场合用?注意事项、HyperLogLog实现原理、pf的内存占用为什么是12k?)
布隆过滤器(布隆过滤器是什么?Redis中的布隆过滤器、布隆过滹器基本使用、注意事项、布隆过滤器的原理、空间占用估计、实际元素超出时,误判率会怎样变化、用不上Redis4.0怎么办?布隆过滹器的其它应用)
简单限流
漏斗限流
GeoHash(用数据库来算附近的人、GeoHash算法、Redis的Geo指令基本使用)
Scan(scan基础使用、字典的结构、scan遍历顺序、字典扩容、对比扩容缩容前后的遍历顺序、渐进式rehash、更多的scan指令、大key扫描)
Redis原理篇
线程IO模型(非阻塞10、事件轮询(多路复用)、指令队列、响应队列、定时任务)
通信协议(RESP(Redis Serialization Protocol)、客户端->服务器、服务器->客户端)
持久化(快照原理、fork(多进程)、AOF原理、AOF重写、fsync、运维、Redis 4.0混合持久化)
管道(Redis的消息交互、管道压力测试、深入理解管道本质)
事务(Redis事务的基本使用、原子性、discard(丢弃)、优化、Watch)
PubSub(消息多播、PubSub、模式订阅、消息结构、PubSub缺点)
小对象压缩(32bit vs 64bit、小对象压缩存储(ziplist)、内存回收机制、内存分配算法)
主从同步(CAP原理、最终一致、主从同步、增量同步、快照同步、增加从节点、无盘复制、Wait指令)
Redis集群篇
Sentinel(消息丢失、Sentinel 基本使用)
Codis(Codis分片原理、不同的Codis实例之间槽位关系如何同步?、扩容、自动均衡、Codis的代价、Codis的优点、MGET指令的操作过程、架构变迁、Codis的尴尬、Codis的后台管理)
Cluster(槽位定位算法、跳转、迁移、容错、网络抖动、可能下线(PFAIL-Possibly Fail) 与确定下线(Fail)、Cluster基本使用、槽位迁移感知、集群变更感知)
Redis拓展篇
Stream(消息ID、消息内容、增删改查、独立消费、创建消费组、消费、Stream消息太多怎么办?、消息如果忘记ACK会怎样?、PEL如何避免消息丢失?、Stream的高可用、分区Partition)
Info指令(Redis每秒执行多少次指令?、Redis连接了多少客户端?、Redis内存占用多大?复制积压缓冲区多大?)
再谈分布式锁
过期策略
LRU
懒惰删除
优雅地使用Jedis
保护Redis
Redis安全通信
Redis源码篇
探索「字符串」内部结构
探索「字典」内部(dict内部结构、渐进式rehash、查找过程、hash函数、hash攻击、扩容条件、缩容条件、set的结构)
探索「压缩列表」内部(增加元素、级联更新、IntSet小整数集合)
探索「快速列表」内部
探索「跳跃列表」内部结构(基本结构、查找过程、随机层数、插入过程、删除过程、更新过程、如果score值都一样呢?、元素排名是怎么算出来的?)
探索「紧凑列表」内部
探索「基数树」内部
总结
Redis本身的设计颇具特色,作为数据库从业者,我从中获益匪浅!这份手册是我见过的内容相对全面、讲解极为生动的Redis实践指导,其中有大量直观的插图和实例。区别于市面上大量粗浅介绍Redis内容的作品,手册对Redis原理的讲解深入浅出、循序渐进,章节安排条理清晰,非常适合中高级后端开发者。
需要的小伙点赞文章,关注我之后添加小助理vx:bjmsb2020 即可获取!