Redis 必备知识总结(基础知识 架构 调优和监控知识及难点解决).docx
《Redis 必备知识总结(基础知识 架构 调优和监控知识及难点解决).docx》由会员分享,可在线阅读,更多相关《Redis 必备知识总结(基础知识 架构 调优和监控知识及难点解决).docx(21页珍藏版)》请在优知文库上搜索。
1、LRedis概览Redis和memcache的区别,Redis支持的数据类型应用场景redis支持的数据结构更丰富(String,hash,list,set,zset)omemcache只支持key-value的存储;redis原生支持集群,memcache没有原生的集群模式。2 .Redis单线程模型redis单线程处理请求流程redis采用IO多路复用机制来处理请求,采用reactorl模型,处理流程如下:首先接收到客户端的socket请求,多路复用器将socket转给连接应答处理器;连接应答处理器将AE-READABLE事件与命令请求处理器关联(这里是把socket事件放入一个队列);命
2、令请求处理器从SOCket中读到指令,再内存中执行,并将AE_WRITEABLE事件与命令回复处理器关联;命令回复处理器将结果返回给SOCke3并解除关联。redis单线程效率高的原因非阻塞IO复用(上图流程),1/0多路复用分派事件,事件处理器处理事件(这个可以理解为注册的一段函数,定义了事件发生的时候应该执行的动作),这里分派事件和处理事件其实都是同一个线程;纯内存操作效率高;单线程反而避免了多线程切换。3 .Redis过期策略对key设置有效期,redis的删除策略:定期删除+惰性删除。定期删除指的是redis默认每100ms就随机抽取一些设置了过期事件的key,检查是否过期,如果过期就
3、删除。如果redis设置了10万个key都设置了过期时间,每隔几百亳秒就要检查10万个key那CPU负载就很高了,所以redis并不会每隔IOomS就检查所有的key,而是随机抽取一些key来检查。但这样会导致有些key过期了并没有被删除,所以采取了惰性删除。意思是在获取某个key的时候发现过期了,如果key过期了就删除掉不会返回。这两个策略结合起来保证过期的key一定会被删除。最大内存淘汰(maxmemory-policy)如果redis内存占用太多,就会进行内存淘汰。有如下策略:noeviction:如果内存不足以写入数据,新写入操作直接报错;Wkeys-Iru:内存不足以写入数据,移除最
4、近最少使用的key(最常用的策略);allkeys-random:内存不足随机移除几个key;Volatilelru:在设置了过期时间的key中,移除最近最少使用;Volatile-random:设置了过期的时间的key中,随机移除几个。4 .Redis主从模式保证高并发和高可用(哨兵模式)读写分离单机的Redis的QPS大概就在上万到几万不等,无法承受更高的并发。读写分离保证高并发(IOW+QPS):对于缓存来说一般都是支撑高并发读,写请求都是比较少的。采用读写分离的架构(一主多从),master负责接收写请求,数据同步到slave上提供读服务,如果遇到瓶颈只需要增加slave机器就可以水平
5、扩容。主从复制机制redisreplication机制:redis采取异步复制到SlaVe节点;slave节点做复制操作的时候是不会block自己的,它会使用旧的数据集来提供服务,复制。完成后,删除旧的数据集,加载新的数据集,这个时候会暂停服务(时间很短暂);如果采用了主从架构,master需要开启持久化。如果master没有开启持久化(rdb和aof都关闭了)。master宕机重启后数据是空的,然后经过复制就把所有slave的数据也弄丢了。即使采用高可用的的哨兵机制,可能sentinal还没有检测到masterfailure,master就自动重启了,还是会导致SlaVe清空故障。主从同步流
6、程当slave启动时会发送一个psync命令给master;如果是重新连接master,则masternode会复制给slave缺少的那部分数据;如果是slave第一次连接master,则会触发一次全量复制(fullresynchronization)o开始fullresynchronization的时候,master会生成一份rdb快照,同时将客户端命令缓存在内存,rdb生成完后,就发送给slave,slave先写入磁盘在加载到内存。然后master将缓存的命令发送给slave。replead哨兵(SentinaI)模式介绍哨兵是redis集群架构的一个重要组件,主要提供如下功能:集群监控:
7、负责监控master和SlaVe是否正常工作;消息通知:如果某个redis实例有故障,哨兵负责发消息通知管理员;故障转移:如果masternode发生故障,会自动切换到slave;配置中心:如果故障转移发生了,通知客户端新的master地址。哨兵的核心知识:哨兵至少三个,保证自己的高可用;哨兵+主从的部署架构是用来保证redis集群高可用的,并非保证数据不丢失;哨兵(SentineI)需要通过不断的测试和观察才能保证高可用。为什么哨兵只有两个节点无法正常工作假设哨兵集群只部署了2个哨兵实例,quorum=Kmaster宕机的时候,si和s2只要有一个哨兵认为master宕机j就可以进行切换,并
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Redis 必备知识总结基础知识 架构 调优和监控知识及难点解决 必备 知识 总结 基础知识 监控 难点 解决
