Redis
Redis
基础框架:高性能(缓存...)+高可用(集群)——存(持久化)与删(删除淘汰)
基础
是什么 (定义,特点)
开源的基于内存的数据库 (内疚多缘分)
基于内存:读写速度快,适用于高性能应用场景,如缓存
持久化:把数据存储到磁盘,方式有AOF日志,RDB快照等
多数据结构:列表、哈希、集合等,灵活的应对不同场景
原子性操作:支持原子性操作,维护并发环境下数据一致性
分布式:提供分布式特性,数据分布多节点,提高可拓展性
为什么 (价值,意义)
高性能(缓存,读写快,降低压力,多数据结构应对场景)
高并发(缓存,原子性,降低并发压力)
单线程
- 网络请求模块使用单线程进行处理 【2.6 4.0 6.0】
- 速度快:基于内存、非阻塞、数据结构、I/O多路复用
数据类型与底层结构

缓存
是什么
-
缓存
高速数据交换的存储器,可以更快的访问和操作数据
-
缓存雪崩
-
缓存击穿
-
缓存穿透
-
为什么、怎么办

集群
怎么办
主从复制
Redis 提供了主从库模式,以保证数据副本的⼀致,主从库之间采⽤的是读写分离的⽅式。
主从库同步模式:全量复制、增量复制、基于⻓连接的命令传播
主从复制同步过程:建⽴连接->主节点创建RDB快照->主节点发送RDB⽂件和AOF缓冲区内容->从节点载⼊RDB⽂件和执⾏AOF缓冲区命令->增量复制->⼼跳和命令传播
如何避免主从数据不一致:持久化和复制配置、保证⽹络稳定性、监控和报警
哨兵模式
通知、监控主从服务器,并提供主从节点故障转移的功能。
工作原理:监控->故障检测->故障转移->⾃动恢复
切片集群
将数据分布在不同服务器上,以此来降低系统对单主节点的依赖
持久化
方法
AOF日志
概念:每执行一条写操作命令,就把该命令以追加方式写入文件
redis启动之初会读取该日志重构数据库以保证数据库完整
对比:redis是内存、写后日志,mysql是磁盘、写前日志
-
写回测策略

-
磁盘重写机制
为了避免⽇志⽂件过⼤,Redis扫描数据中所有键值对,生成写操作命令并写入新的AOF日志,替换现有的AOF日志
重写过程:⼀处拷⻉,两处⽇志

RDB快照
概念:将某一时刻的内存数据,以二进制的方式写入磁盘
-
RDB ⽂件的生成命令
save 命令,在主线程⽣成 RDB ⽂件
bgsave 命令,创建⼦进程⽣成 RDB ⽂件,避免主线程的阻塞
混合持久化
Redis4.0新方式,集成AOF与RDB的优点
过期删除
过期删除策略
-
定时删除
在设置 key 的过期时间时,同时创建⼀个定时事件,当时间到达时,由事件处理器⾃动执⾏ key 的删除操作。
-
惰性删除
不主动删除过期键,每次从数据库访问 key 时,都检测 key 是否过期,如果过期则删除该 key。
-
定期删除
每隔⼀段时间「随机」从数据库中取出⼀定数量的 key 进⾏检查,并删除其中的过期key。
Redis策略
「惰性删除+定期删除」
-
惰性删除依据 expireIfNeeded 函数来实现,每次返回或者修改key之前,都会调⽤该函数检查 key 是否过期
-
如果过期,删除该key, lazyfree_lazy_expire 参数决定是同步删除还是异步删除,然后返回 null 给 客户端
-
如果没有过期,则返回正常的键给客户端
-
-
定期删除的做法是每隔⼀段时间「随机」从数据库中取出⼀定数量的 key 进⾏检查,并删除其中的过期 key。
- 默认每隔10s检查⼀次数据库,配置键为 hz: 10
- 随机抽查的数量是20个key
内存淘汰
内存淘汰策略
- 不进行数据淘汰
- NoEviction: 如果内存不⾜以执⾏写操作,Redis将返回错误,默认的淘汰策略。
- 进行数据淘汰
- VolatitleLRU: 只对带有过期时间的键使⽤LRU策略,其他键使⽤NoEviction策略。
- VolatitleLFU: 只对带有过期时间的键使⽤LFU策略,其他键使⽤NoEviction策略。
- AllKeysLRU: 根据最近最少使⽤的原则淘汰最久未使⽤的键。
- AllKeysLFU: 根据最少频繁使⽤的原则淘汰最少使⽤的键。
LRU与LFU区别
-
LRU(Least Recently Used)
- 最近被访问的数据更有可能在未来被再次访问,所以选择最近最少被使⽤的对象进⾏淘 汰。
- 在 Redis 的对象结构体中添加⼀个额外的字段,⽤于记录此数据的最后⼀次访问时间。当 Redis 进⾏内存淘汰时,会使⽤随机采样的⽅式来淘汰数据,然后淘汰最久没有使⽤的那个。
-
LFU(Least Frequently Used)
- 使⽤频率较低的对象在未来仍然会较少被访问,所以选择使⽤频率最低的对象进⾏淘汰。
- LFU维护⼀个使⽤计数,每当⼀个对象被访问时,其使⽤计数增加。在需要淘汰对象时,选择使⽤计数 最低的对象淘汰

浙公网安备 33010602011771号