Redis学习笔记(下)
1. 主从模式
- 原理:启动一个slave node的时候,会发送一个psync命令给master node如果这个slave node 重新连接master node,那么master node 仅仅会复制给slave部分缺失的那一部分;否则如果是slave node 第一次连接master node,那么会触发一次full resynchribuzation
- 触发full resynchronization的时候,master会启动一个后台线程,开始生成一份RDB快照文件,同时还会将客户端收到的所有命令缓存在内存中,RDB文件生成完,master会将RDB发给slave,slave写入本地磁盘;在从磁盘加载到内存
- 接着master会将内存中缓存的命令(只有写的)发送给多个slave node 如果跟master node有网络故障,断开连接,会自动重新连接
- master如果发现多个slave node 都来重新连接,仅仅启动一个rdb save操作,用一份数据服务索引slave node。
2. 哨兵模式
- 主要功能:集群监控,消息通知,故障转移,配置中心
- 集群监控:负责master和slave是否正常工作
- 消息通知:如果某个redis实例有问题,那么哨兵负责发送消息作为报警
- 故障转移,如果master node崩了,会自动转移到slave node上
- 配置中心:如果故障转移了,通知client客户端新的master地址
3. Redis的常见问题
-
缓存穿透:指缓存和数据库都没有的数据,用户大量请求,不断发起,最终直接落到数据库的服务器上导致服务异常
-
缓存击穿:指缓存没有,但是数据库有数据,这时候大量请求落到数据库上,引起数据库压力瞬间增大
-
缓存雪崩:指缓存中数据大批量同事国企后置redis 宕机,这时候大量请求不断访问,引起数据库压力过大甚至服务崩溃