《Redis核心技术与实战》读书笔记
2023-07-11 09:29:11 50 举报
AI智能生成
以导图的形式展示
作者其他创作
大纲/内容
四、缓存相关
1、旁路缓存:
缓存的两个特征
只读缓存 和 读写缓存
同步直写 和 异步写回
2、替换缓存:数据淘汰机制
热点数据缓存
八二原则
七种数据淘汰策略
如何处理被淘汰的数据
3、缓存异常1:缓存不一致
1、什么是一致性
2、对于读写缓存的缓存读写方式
3、对于只读缓存,无论是先删缓存再更新数据库,还是更新数据库再删除缓存,都会面临缓存不一致的问题
4、如何解决缓存不一致问题:重试机制
5、在并发情况下,只读缓存还是会不一致
解决办法1:延迟双删,针对先删除缓存,再更新数据库的情况
4、缓存异常2:缓存雪崩、缓存击穿、缓存穿透
缓存雪崩
对于大量数据同时过期的缓存雪崩,可以采取设置不同的过期时间,或者服务降级的策略
对于因为宕机引起的雪崩
缓存击穿
缓存穿透
处理方案
5、缓存污染:不常用的缓存一直占用内存
volatile-random、allkeys-random 和 volatile-ttl 没法做到有效的防止缓存污染
LRU 缓存策略:如果一个数据刚刚被访问,那么这个数据肯定是热数据,还会被再次访问
LFU 缓存策略:既看访问时间,也看访问次数
五、并发 、事务、主从同步、脑裂相关
1、无锁的原子操作
并发访问就是对 读取-修改-写回的RMW流程进行控制,确保原子性
方式1:把多个操作变成单命令操作
方式2:Lua脚本:把多个操作写到一个 Lua 脚本中,以原子性方式执行
2、分布式锁
基于单个redis节点实现分布式锁
基于多个 Redis 节点实现高可靠的分布式锁
3、ACID 事务
原子性:一个事务中的多个操作必须都完成,或者都不完成
4、主从同步机制的坑
主从数据不一致
读到过期数据
不合理的配置项导致服务挂掉
5、脑裂,产生数据丢失
发生原因:原主库发生了假故障,在主从切换过程中仍然接受写请求,从而,导致数据不一致
解决:
六、实践操作:秒杀、数据分布优化、降低通信开销
1、redis支持秒杀的关键技术
2、数据分布优化:如何应对数据倾斜?
1、数据量倾斜
2、数据访问倾斜
3、通信开销:限制Redis Cluster规模的关键因素
七、Redis 6.0的新特性:多线程、客户端缓存与安全
1、面向网络处理的多 IO 线程
2、实现服务端协助的客户端缓存
3、访问权限控制列表 ACL
4、RESP 3 协议
一、Redis 基础
0、Redis三大主线
1、键值数据库架构
访问框架
索引模块
操作模块
存储模块
2、Redis数据结构
1、哈希表:实现从键到值的访问
2、集合数据的操作
整数数组
双向链表
哈希表
压缩列表
跳表
3、操作复杂度
3、高性能I/O模型
基于select/epoll 机制,实现的I/O多路复用模型
4、持久化机制
AOF:写后日志
1、写后日志
2、3种写回策略
3、AOF 重写机制
what:读取数据库中的所有键值对,然后对每一个键值对用一条命令记录它的写入命令
how:fork出一个子线程,进行重写;一个拷贝,两处日志,拷贝指数据库的最新数据,日志包括正在进行的AOF缓存日志,和正在进行重写的AOF缓存日志
RDB:记录某一时刻的数据
快照哪些内存数据:全量快照
快照时数据能修改么:写时复制技术
多久做一次快照:增量快照
混合使用 AOF 日志和内存快照
混合AOF和RDB
5、数据同步/主从复制
全量复制:主从模式
基于长连接的命令传播
增量复制:repl_backlog_buffer 环形缓冲区
6、哨兵机制
1、监控:判断主从库下线状态
2、选主:从从库中选出新的主库
3、通知:把新主库的相关信息通知给从库和客户端
4、哨兵集群
基于发布/订阅 机制的哨兵集群
基于 pub/sub 机制的客户端事件通知
用相互投票的机制,决定由哪个哨兵来进行主从切换
7、切片集群
哈希槽的数据分布机制
客户端如何定位数据?
8、其余问题
1、Redis 什么时候做 rehash
2、主线程、子进程和后台线程
二、数据结构
1、内存占用 String vs 压缩列表
2、集合类型统计模式:聚合统计、排序统计、二值状态统计和基数统计
3、GEO 地理位置服务;自定义数据类型
4、时间序列:RedisTimeSeries
5、实践- redis消息队列
消息队列的消息存取需求
基于 List 的消息队列解决方案
基于 Streams 的消息队列解决方案
三、影响 Redis 性能的 5 大方面的潜在因素
1、Redis 内部的阻塞式操作以及应对的方法
与客户端交互的阻塞点
和磁盘交互时的阻塞点
主从节点交互
切片集群实例交互时的阻塞点
异步的子线程机制
2、CPU结构对Redis的影响
CPU 架构对应用程序运行的影响
CPU 多核对 Redis 性能的影响
CPU 的 NUMA 架构对 Redis 性能的影响
绑核的风险
3、redis响应延迟的排查方法
1、判断redis是否变慢
2、变慢-redis自身特性的影响
3、变慢-文件系统:AOF 模式
1、当AOF重写量大时,可能会造成阻塞
2、解决办法:根据业务需求,判断AOF的写回策略
4、变慢-操作系统:swap、内存大页
内存 swap 是操作系统里将内存数据在内存和磁盘间来回换入和换出的机制
直接关闭内存大页
4、内存空间存储效率问题
21、缓冲区
两类缓冲区:服务器端和客户端、主从集群间的
1、服务器端和客户端之间
输入缓冲区
输出缓冲区
2、主从集群中的缓冲区
八、其余
学习资料
学习方法论
0 条评论
下一页