Redis哨兵模式
1、配置哨兵文件:sentinel.conf
sentinel monitor 被监控的名称 host port 1
优点
1、哨兵集群,基于主从复制模式,所有的主从配置优点它全都有
2、主从可以切换,故障可以转移,系统的可用性就会更好
3、哨兵模式就是主从模式的升级,手动到自动,更加健壮
缺点:
1、Redis不好在线扩容,集群容量一旦到达上限,在线扩容就十分麻烦
2、实现哨兵模式的配置其实是很麻烦的,里面有很多选择
Redis缓存穿透与雪崩
未查询到值所导致的
用户想要查询一个数据,发现缓存中没有,于是向持久层数据库查询,发现也没有,于是查询失败。而当多个用户查询的时候,缓存都没有被命中,于是都去请求持久化数据库,给数据库带来了很大的压力,就叫做缓存穿透。
解决方法:
布隆过滤器:
是一种数据结构,对所有可能查询的参数以hash形式存储,在控制层先进行校验,不符合则丢弃数据,从而避免对底层数据库的查询压力。缓存空对象:
当存储未命中后,即便返回一个空的对象也会被存储起来,会同时设置一个过期时间,之后再访问这个数据就会从缓存中获取。保护了后端数据源。
缓存击穿:查询量太大导致的
是指一个非常热点的key,不停扛着大并发,大并发集中对一个点进行访问,key在过期的瞬间,还有大量的请求并发访问,就会穿破缓存,直接请求数据库,使数据库压力增大。
解决方法:
设置热点数据永不过期:只要热点永不过期,原理上就不会出现过期瞬间查询数据库压力
加互斥锁:使用分布式锁,保证对于每个key同时只有一个线程去查询后端服务,其他线程没有获得分布式锁的权限,因此只需要等待即可,将高并发的压力转移到了分布式锁上面,因此对分布式锁的考验很大。
雪崩:
在一个时间,所有的缓存全部过期失效,所有的数据涌入数据库查询,造成数据库压力过大甚至挂掉的可能。