Redis知识点总结
2024-10-26 10:08:59 8 举报
AI智能生成
三年Java经验,Redis理论&实践全面总结
作者其他创作
大纲/内容
数据类型
Redis底层数据结构
SDS
C语言字符串的缺陷
SDS结构设计
链表
链表节点结构设计
链表结构设计
压缩列表
压缩列表结构设计
连锁更新
缺陷
哈希表
哈希表结构设计
哈希冲突
链式哈希
rehash
渐进式rehash
rehash触发条件
整数集合
整数集合的结构设计
升级操作
跳表
跳表结构设计
跳表查询过程
quicklist
listpack
持久化
持久化的方式
RDB持久化
命令生成RDB文件
save
bgsave
redis.conf文件配置
save 秒数 修改次数
底层实现
redisServer结构体
saveparams
dirty
lasttime
写时复制技术
AOF持久化
AOF日志
三种回写策略
Always
Everysec
No
AOF重写机制
工作流程
AOF重写时,为什么不复用现有的AOF文件
AOF后台重写
RDB和AOF结合
Redis大Key问题
对持久化的影响
大Key对AOF日志的影响
大Key对AOF重写和RDB的影响
fork函数执行耗时的优化
复制物理内存的时机
写时复制技术(Copy On Write)
父进程阻塞的情况
其他影响
客户端超时阻塞
引发网络阻塞
阻塞工作线程
内存分布不均
如何避免大Key
大Key拆分为多个小Key
unlink命令异步删除大Key
如何找到大key
redis-cli --bigkeys
scan命令扫描数据库,type命令获取每个key的类型
RdbTools
操作实践
缓存常见问题
缓存穿透
导致原因
业务误操作
黑客恶意攻击
解决方案
限制非法请求
缓存空值或默认值
布隆过滤器快速判断数据是否存在
实现步骤
工作原理
注意问题
误判率
数据更新
哈希函数选择
存储空间的考虑
缓存击穿
解决方案
互斥锁
不给锁设置过期时间/后台异步更新缓存
缓存雪崩
大量数据同时过期
解决方案
均匀设置过期时间
互斥锁
后台更新缓存
Redis故障宕机
解决方案
服务熔断或请求限流
构建Redis缓存高可用集群
常见的缓存更新策略
Cache Aside(旁路缓存策略)
写策略
读策略
先删除缓存,再更新数据会出现数据不一致?
Write/Read Through(读穿/写穿策略)
Write Back(写回策略)
数据库和缓存的一致性保证
过期删除策略
key如何设置过期时间
如何判断key过期
过期字典存储在redisDb
删除策略有哪些
定时删除
优点
缺点
惰性删除
优点
缺点
定期删除
优点
缺点
内存淘汰策略
设置Redis的最大运行内存
Redis的内存淘汰策略(8种)
不进行数据淘汰的策略
noeviction
进行数据淘汰的策略
对设置了过期时间的key进行淘汰
volatile-random
volatile-ttl
volatile-lru
volatile-lfu
对所有数据进行淘汰
allkeys-random
allkeys-lru
allkeys-lfu
相关算法
LRU算法
传统的LRU算法
Redis实现的LRU算法
优点
缺点
LFU算法
底层实现
redis.conf中的相关配置项
lfu-decay-time
lfu-log-factor
功能实现
缓存
实时系统
消息队列
分布式锁
计数器
其他
高可用
主从复制
第一次同步(全量同步)
1)建立连接,协商同步
2)主服务器同步数据给从服务器
流程
主从服务器的数据一致性保证
写操作命令写入replication buffer
基于TCP、长连接的命令传播
3)主服务器发送新写操作命令给从服务器
基于长连接的命令传播
增量复制
Redis2.8以前
Redis2.8+
主如何确定要同步给从的增量数据
repl_backlog_buffer
缓冲区大小的优化调整
写入时机
replication offset
主服务器压力分摊
注意
replication buffer 和 repl_backlog_buffer的区别
哨兵机制
引入必要性
工作原理
监控
选举
通知
主节点如何判断故障
主观下线
客观下线
减少误判
工作流程
主从故障转移
哨兵如何操作
候选者&Leader
候选者如何选举为Leader
故障转移的全过程
1)选出新主节点
过滤掉网络状态不好的从节点
从节点优先级
复制进度
从节点的运行ID
2)将从节点指向新的主节点
3)通知客户端主节点已更新
发布者/订阅者机制实现
频道&事件
工作流程
4)将旧的主节点变为从节点
哨兵集群组成
哨兵信息配置
发布者/订阅者机制实现相互发现和通信
集群
Redis节点
槽指派
ASK错误
复制和故障转移
脑裂
问题描述
Redis的脑裂问题
如何避免脑裂
Redis配置
脑裂问题能完全避免?
事件
分类
文件事件
文件事件处理器
时间事件
定时事件
周期性事件
10/22,16:40
收藏
收藏
0 条评论
下一页
为你推荐
查看更多