哨兵模式:
哨兵:一台redis服务器,不保存数据
目的:监控master、slave运行情况
阶段一:监控阶段:
用于同步各个节点的状态信息,获取哨兵和master、slave信息和状态。
阶段二:通知阶段:
哨兵通知master、slave
阶段三:故障转移:
1.哨兵查看master未回应,标记为SRI_S_DOWN,其他slave共享结果,未回应,也进行标记
2.哨兵派一个去通知slave:哨兵互相投票,谁先收到谁的,就投谁,票数都未过半,再来一轮
3.剔除slave:不在线、反应慢、断开时间太长。接下来是优先选择的:优先级、偏移量、runid
4.新晋master昭告天下。
集群模式:
作用: 分散单台服务器的访问压力,实现负载均衡
分散单台服务器的存储压力,实现可扩展性
降低单台服务器宕机带来的业务灾难
企业问题:
缓存预热就是系统启动前,提前将相关的缓存数据直接加载到缓存系统。避免在用户请求的时候,先查询数据库,然后再将数据缓存的问题!用户直接查询事先被预热的缓存数据!
缓存雪崩:
现象:
原因:在较短时间内,大量的key集中过期。
解决方案:
1.小道:调整数据有效期。
将超热key变为永久key
2.大道:构建多级缓存nginx、redis、ehcache缓存
优化MySQL耗时验用的业务
服务降级
缓存击穿:
原因:单个数据访问量太大,但是数据请求未命中,key过期,形成大量的数据库统一数据的访问
解决:预先设定过期时间,
二级缓存
缓存穿透:(其实就是访问了不存在的数据)
原因:获取的数据不在reids,同时redis未保存为null,数据库中也未找到。
解决:对查询为null的结果缓存
白名单策略:预热各种数据与bitmaps中,id作为偏移量,正常数据放行,拦截不正常
实时监控redis命中率,非活动3-5倍,超出5倍重点监测。活动10-50倍,超过50倍重点监测,然后使用黑名单防控。黑白名单都对整体系统有压力,警报解除后尽快移除。