前言
作为这个时代码代码的秃头人员,对Redis肯定是不陌生的,如果连Redis都没用过,还真不好意思出去面试,指不定被面试官吊打多少次。
毕竟现在互联网公司和一些创业公司都要用到Redis,像亚马逊、谷歌、阿里、腾讯都要使用,可见精通Redis使用真的很有必要。
所以,今天则分享出腾讯云大神亲自码出的“redis深度笔记”,笔记内容没有讲一句废话,全篇看下来都是精华!
添加图片注释,不超过 140 字(可选)
PART1:Redis深度笔记开篇
1.Redis可以用来做什么?
由Redis面试想到的
Redis可以做什么?
添加图片注释,不超过 140 字(可选)
2.Redis基础数据结构
Redis安装
Redis基础的数据结构
容器型数据结构的通用规则
关于Redis使用的一些思考
添加图片注释,不超过 140 字(可选)
PART2:Redis的应用总结
1.分布式锁
分布式锁
超时问题
可重入性
添加图片注释,不超过 140 字(可选)
2.延时队列
异步消息队列?
队列空了怎么办?
队列延迟
空闲连接自动断开
锁冲突处理
延时队列的实现
进一步优化
添加图片注释,不超过 140 字(可选)
3.位图
基本使用
统计和查找
魔术指令 bitfield
添加图片注释,不超过 140 字(可选)
4.HyperLogLog
使用方法
pfadd这个pf是什么意思?
pfmerge适合什么场合用?
注意事项
HyperLogLog实现原理
pf的内存占用为什么是12k?
添加图片注释,不超过 140 字(可选)
5.布隆过滤器
布隆过滤器是什么?
Redis中的布隆过滤器
布隆过滤器的基本使用
注意事项
布隆过滤器的原理
空间占用估计
实际元素超出时,误判率会怎样变化?
用不上Redis4.0怎么办?
布隆过滤器的其他应用
添加图片注释,不超过 140 字(可选)
6.简单限流
如何使用Redis来实现简单限流策略?
添加图片注释,不超过 140 字(可选)
7.漏斗限流
Redis-Cell
一些思考
添加图片注释,不超过 140 字(可选)
8.GeoHash
用数据库来算附近的人
GeoHash算法
Redis的Geo指令基本使用
添加图片注释,不超过 140 字(可选)
9.Scan
scan基础使用
字典的结构
scan遍历顺序
字典扩容
对比扩容缩容前后的遍历顺序
渐进式rehash
更多的scan指令
大Key扫描
添加图片注释,不超过 140 字(可选)
PART3:Redis的原理
1.线程IO模型
非阻塞IO
事件轮询(多路复用)
指令队列
响应队列
定时任务
添加图片注释,不超过 140 字(可选)
2.通信协议
RESP(Redis Serialization Protocol)
客户端->服务端
服务端->客户端
添加图片注释,不超过 140 字(可选)
3.持久化
快照原理
fork(多进程)
AOF原理
AOF重写
fsync
运维
Redis4.0混合持久化
添加图片注释,不超过 140 字(可选)
4.管道
Redis的消息交互
管道压力测试
深入理解管道本质
添加图片注释,不超过 140 字(可选)
5.事务
Redis事务的基本使用
原子性
discard(丢弃)
优化
Watch
添加图片注释,不超过 140 字(可选)
6.PubSub
消息多播
PubSub
模式订阅
消息结构
PubSub缺点
添加图片注释,不超过 140 字(可选)
7.小对象压缩
32bit vs 64bit
小对象压缩存储(ziplist)
内存回收机制
内存分配算法
添加图片注释,不超过 140 字(可选)
8.主从同步
CAP原理
最终一致
主从同步
增量同步
快照同步
增加从节点
无盘复制
Wait指令
添加图片注释,不超过 140 字(可选)
PART4:Redis集群
1.Sentinel
消息丢失
Sentinel基本使用
添加图片注释,不超过 140 字(可选)
2.Codis
Codis分片原理
不同的Codis实例之间槽位关系如何同步?
扩容
自动均衡
Codis的代价
Codis的优点
MGET指令的操作过程
架构变迁
Codis的尴尬
Codis的后台管理
添加图片注释,不超过 140 字(可选)
3.Cluster
槽位定位算法
跳转
迁移
容错
网络抖动
可能下线(PFAIL-Possibly Fail)与确定下线(Fail)
Cluster基本使用
槽位迁移感知
集群变更感知
添加图片注释,不超过 140 字(可选)
PART5:Redis拓展
1.Stream
消息ID
消息内容
增删改查
独立消费
创建消费组
消费
Stream消息太多怎么办?
消息如果忘记ACK会怎样?
PEL如何避免消息丢失?
Stream的高可用
分区Partition
添加图片注释,不超过 140 字(可选)
2.Info指令
Redis每秒执行多少次指令?
Redis连接了多少客户端?
Redisn内存占用多大?
复制积压缓存区多大?
添加图片注释,不超过 140 字(可选)
3.再谈分布式锁
Redlock算法
Redlock使用场景
添加图片注释,不超过 140 字(可选)
4.过期策略
过期的key集合
定时扫描策略
从库的过期策略
添加图片注释,不超过 140 字(可选)
5.LRU
LRU算法
近似LRU算法
添加图片注释,不超过 140 字(可选)
6.懒惰删除
Redis为什么要懒惰删除(lazy free)?
flush
异步队列
AOF Sync也很慢
更多异步删除点
添加图片注释,不超过 140 字(可选)
7.优雅地使用Jedis
重试
添加图片注释,不超过 140 字(可选)
8.保护Redis
指令安全
端口安全
Lua脚本安全
SSL代理
添加图片注释,不超过 140 字(可选)
9.Redis安全通信
spiped原理
spiped使用入门
添加图片注释,不超过 140 字(可选)
PART6:源码
1.探索字符串内部结构
embstr vs raw
扩容策略
添加图片注释,不超过 140 字(可选)
2.探索字典内部
dict 内部结构
渐进式rehash
查找过程
hash 函数
hash攻击
扩容条件
缩容条件
set的结构
添加图片注释,不超过 140 字(可选)
3.探索压缩列表内部
增加元素
级联更新
IntSet 小整数集合
添加图片注释,不超过 140 字(可选)
4.探索快速列表内部
每个ziplist存多少元素?
压缩深度
添加图片注释,不超过 140 字(可选)
5.探索跳跃列表内部结构
基本结构
查找过程
随机层数
插入过程
删除过程
更新过程
如果score值都一样呢?
元素排名是怎么算出来的?
添加图片注释,不超过 140 字(可选)
6.探索紧凑列表内部
级联更新
取代ziplist
添加图片注释,不超过 140 字(可选)
7.探索基数树内部
应用
结构
增删节点
添加图片注释,不超过 140 字(可选)
总结
最后,我想说的是,学习并非难事,而贵在坚持,尤其是在我们参与工作之后,要继续坚持学习就更不容易了。但对于程序员来说,学习是立业之根本,如若放弃学习,被市场淘汰是迟早的事情。所以,学习更多新的知识对于自己来说才是一种更大的投资。
以上,到此结束。
资源获取:
大家点赞、收藏、关注、评论啦 、查看微信公众号获取联系方式
精彩专栏推荐订阅:在下方专栏
每天学四小时:Java+Spring+JVM+分布式高并发,架构师指日可待