Redis进阶
Redis持久化
RDB(Redis Database)
触发机制
- save规则满足的情况下,会自动触发rdb规则
- 执行flushall命令,也会触发rdb规则
- 退出redis,也会产生rdb文件
恢复rdb文件
- 将rdb文件存放在redis的启动目录
- 查看需要存在的位置
AOF(Append Only File)
以日志的形式记录每个写操作,将Redis执行过的所有指令记录下来(读操作不记录),只许追加文件而不可以改写文件,Redis启动之初会读取该文件重新构建数据.
Redis发布订阅
Redis发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接受消息。
订阅端
1 | 127.0.0.1:6379> ping |
发送端
1 | 127.0.0.1:6379> ping |
Redis主从复制
概念
主从复制是指将一台Redis服务器的数据,复制到其他的Redis服务器,前者称为master,后者称为slave.数据的复制是单向的,只能从主节点到从节点.Master以写为主,Slave以读为主.
主从复制,读写分离.实战中80%的业务都是读操作,利用仆从服务器减缓服务器的压力
主要作用
- 数据冗余:实现了数据的热备份,是持久化之外的一种数据冗余方式
- 故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复,实际上是一种服务的冗余
- 负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务,分担服务器负载
- 高可用基石:主从复制是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础
一主二从
默认情况下,每台Redis服务器都是主节点
配置从机:
1 | 127.0.0.1:6379> SLAVEOF 127.0.0.1 6380 # SLAVEOF host port |
哨兵模式
概述
哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行.其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例.
使用
- 配置哨兵配置文件sentinel.conf
1 | # senrinel monitor name host port 1 |
- 启动哨兵
缓存问题
缓存雪崩
缓存雪崩:缓存在同一时刻全部失效,造成瞬时DB请求量大、压力骤增,引起雪崩。缓存雪崩通常因为缓存服务器宕机、缓存的 key 设置了相同的过期时间等引起。
缓存击穿
缓存击穿:一个存在的key,在缓存过期的一刻,同时有大量的请求,这些请求都会击穿到 DB ,造成瞬时DB请求量大、压力骤增。
缓存穿透
缓存穿透:查询一个不存在的数据,因为不存在则不会写到缓存中,所以每次都会去请求 DB,如果瞬间流量过大,穿透到 DB,导致宕机。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Napleon!
评论