作者:戴耳机聆听世界 | 来源:互联网 | 2023-09-10 10:00
本文框架如下
第一部分,主要是在阅读代码过程中的日志和笔记;
第二部分,主要介绍了 Redis 的主要框架,以及 Redis 是如何提供服务的,从一个最简单的命令开始讲起;
第三部分,主要介绍 Redis 底层用作存储的数据结构,这一部分很有趣;
第四部分,主要讲解了 Redis 的核心功能,包括持久化,订阅/发布模式,主从复制,事务机制,集群等等;
第五部分,展示了 Redis 几个简单的应用;
第六部分,介绍了 Redis 和 Memcached 的区别,以及稍稍讲解了 Memcached。
Tips:本文内容已经整理成了pdf版本,内容由真实腾讯专家手写,感兴趣的朋友可以通过【关注+点赞+评论本文】的方式获取到腾讯专家手写Redis源码日志笔记pdf版本!
![](https://img.php1.cn/3cd4a/1eebe/cd5/433ea70d6ea577b1.jpeg)
Redis服务框架
①初探 Redis
![](https://img.php1.cn/3cd4a/1eebe/cd5/ea91d84a82557da5.webp)
②Redis 事件驱动详解
![](https://img.php1.cn/3cd4a/1eebe/cd5/45a090220e38e09d.webp)
-
Redis 事件驱动原理
-
事件注册详解
-
准备监听工作
-
为监听套接字注册事件
-
事件循环
-
事件触发
![](https://img.php1.cn/3cd4a/1eebe/cd5/67cc2e96eddffff8.png)
③Redis 是如何提供服务的
- initServerConfig()
- aeMain()
- 新连接的处理流程
- 请求的处理流程
- 执行命令
- 在哪里回复客户端
![](https://img.php1.cn/3cd4a/1eebe/cd5/e3aa5425383ba10d.png)
Redis 基础数据结构
①Redis 数据结构综述
一览 Redis 数据结构:
- Redis 命令和相关的数据结构
- Redis 数据结构 redisOb
- Redis 数据结构 sds
- Redis 数据结构 dict
- Redis 数据结构 ziplist
- Redis 数据结构 skiplist
- Redis 数据结构 intset
![](https://img.php1.cn/3cd4a/1eebe/cd5/a5d7215df572c386.webp)
Redis 内功心法
①Redis 数据淘汰机制
- 概述
- LRU 数据淘汰机制
- TTL 数据淘汰机制
- 在哪里开始淘汰数据
![](https://img.php1.cn/3cd4a/1eebe/cd5/dc7ef30f57b727c7.jpeg)
②RDB 持久化策略
- 简介 Redis 持久化 RDB、AOF
- 数据结构 rio
- RDB 持久化的运作机制
- RDB 数据的组织方式
![](https://img.php1.cn/3cd4a/189d8/978/7dbdf0f38ad53545.jpeg)
③AOF 持久化策略
- 简介
- AOF 数据组织方式
- AOF 持久化运作机制
- 细说更新缓存
- AOF 恢复过程
- AOF 的适用场景
![](https://img.php1.cn/3cd4a/9b0d/ae9/2d998ad7838fbf16.jpeg)
④订阅发布机制
![](https://img.php1.cn/3cd4a/1eebe/cd5/02c379d60086f382.webp)
⑤主从复制
- 概述
- 积压空间
- 主从数据同步机制概述
- 全同步
- 部分同步
- 缓存主机
- 总结
![](https://img.php1.cn/3cd4a/1eebe/cd5/bff2716168d1ed7b.webp)
⑥Redis 事务机制
- Redis 事务简述
- Redis 命令队列
- 键值的监视
- Redis 事务的执行与取消
- Redis 事务番外篇
![](https://img.php1.cn/3cd4a/1eebe/cd5/c72d78d7317a9e8e.webp)
⑦Redis 与 Lua 脚本
- Lua 简介
- Redis 为什么添加 Lua 支持
- Lua 环境的初始化
- Lua 脚本执行 Redis 命令
- Redis Lua 脚本的执行过程
- 脏命令
- Lua 脚本的传播
- 总结
![](https://img.php1.cn/3cd4a/1eebe/cd5/0d80e8a685a9a87b.png)
⑧Redis 哨兵机制
- Redis 哨兵的服务框架
- 定时程序
- 哨兵与 Redis 服务器的互联
- HELLO 命令
- INFO 命令
- 心跳
- 在线状态监测
- 故障修复
- Redis 监视器
- Redis 数据迁移
![](https://img.php1.cn/3cd4a/1eebe/cd5/433ea70d6ea577b1.jpeg)
⑨Redis 集群(上)
- 前奏
- 谈一致性哈希算法(consistent hashing)
- 怎么实现?
- twemproxy - Redis 集群管理方案
- Redis 官方版本支持的集群
![](https://img.php1.cn/3cd4a/1eebe/cd5/3e641eb5f5c8cd90.webp)
⑩Redis 集群(下)
- 数据结构
- 数据访问
- 新的节点
- 心跳机制
- 故障修复
- 故障修复的协议
- 数据迁移
- 总结
![](https://img.php1.cn/3cd4a/1eebe/cd5/0ef126b5295c089b.webp)
Redis 应用
- Redis 应用
- 积分排行榜
- 分布式锁
- 消息中间件
- Web 服务器存储 session
![](https://img.php1.cn/3cd4a/1eebe/cd5/ddcc574beb16294e.jpeg)
其他
①内存数据管理
- 共享对象
- 两种内存分配策略
- memory aware 支持
- zmalloc_get_private_dirty() 函数
- 总结
![](https://img.php1.cn/3cd4a/1eebe/cd5/60405fda58cd0acd.webp)
②Redis 日志和断言
![](https://img.php1.cn/3cd4a/1eebe/cd5/ed19db63ee478b98.png)
③Redis 与 Memcache
- 单进程单线程与单进程多线程
- 丰富与简单的数据结构
- 其他
- 性能测试
![](https://img.php1.cn/3cd4a/1eebe/cd5/43a754c811e7ec5c.webp)
④小剖Memcache
- 初始化过程
- UNIX 域套接字和 UDP/TCP 工作模式
- 工作线程管理和线程调配方式
- 存储容器
- 连接管理
- 一个请求的工作流程
- Memcached 的分布式
![](https://img.php1.cn/3cd4a/1eebe/cd5/fb32005f2115b419.webp)
⑤Memcached slab 分配策略
- Memcached slab 概述
- slab class
- 内存分配的过程
- lru 机制
![](https://img.php1.cn/3cd4a/1eebe/cd5/d34245582687a4e6.webp)
⑥源码阅读工具
- sublime text 2/3
- Eclipse CDT
- Source insight
![](https://img.php1.cn/3cd4a/1eebe/cd5/d34245582687a4e6.webp)
最后
码字不易,觉得有帮助的可以帮忙点个赞,让更多有需要的人看到
又是一年求职季,在这里,我为各位准备了一套Java程序员精选高频面试笔试真题,来帮助大家攻下BAT的offer,题目范围从初级的Java基础到高级的分布式架构等等一系列的面试题和答案,用于给大家作为参考,需要的可以戳这里免费领取,以下是部分内容截图
图片转存中…(img-mVLRndiM-1626361244540)]
最后
码字不易,觉得有帮助的可以帮忙点个赞,让更多有需要的人看到
又是一年求职季,在这里,我为各位准备了一套Java程序员精选高频面试笔试真题,来帮助大家攻下BAT的offer,题目范围从初级的Java基础到高级的分布式架构等等一系列的面试题和答案,用于给大家作为参考,需要的可以戳这里免费领取,以下是部分内容截图
![架构面试专题及架构学习笔记导图.png](https://img.php1.cn/3cd4a/1e618/bdf/129913486c37ddf6.jpeg)