缓存雪崩
缓存雪崩
是指缓存同一时间大面积的失效,所以后面的请求都会落到数据库上,造成数据库短时间内承受大量请求而崩掉解决方案
缓存穿透
是指缓存和数据库中都没有的数据,导致所有的请求都落到数据库上,造成数据库短时间内承受大量的请求而崩掉解决方案
缓存击穿
是指缓存中没有但数据库中有的数据(一般是缓存时间到期),这时由于并发用户特别多,同时读缓存没有读到数据,又同时去数据库去取数据,引起数据库压力瞬间增大,造成过大压力。和缓存雪崩不同的是,缓存击穿指并发查同一条数据,缓存雪崩是不同数据都过期了,很多数据都查不到从而去查数据库
解决方案
缓存预热
是指系统上线后,将相关的缓存数据直接加载到缓存系统。这样就可以避免在用户请求的时候,先查询数据库,然后再将数据缓存的问题,用户直接查询实现被预热的缓存数据即可解决方案
当访问量剧增,服务出现问题(比如响应时间慢或不响应)或非核心服务影响到核心流程的性能时,仍然需要保证服务还是可用的,即使是有损服务。系统可以根据一些关键数据进行自动降级,也可以配置开关实现人工降级
缓存降级
的最终目的是保证核心服务客用户,即使是有损的。而且有些服务是无法降级的(比如加入购物车,结算)
在进行降级之前对系统进行梳理,看看系统是不是可以丢卒保帅,从而梳理出哪些必须誓死保护,哪些可以降级,比如可以参考日志级别设置预案
服务降级的目的是为了防止Redis服务故障,导致数据库跟着一起发生雪崩问题。因此对于不重要的缓存数据,可以采取服务降级策略,例如一个比较常见的做法就是Redis出现问题,不去数据库查询,而是直接返回默认值给用户
热点数据和冷数据
缓存热点key
解决方案
缓存击穿
:单个key过期,恰好大量请求访问这个key,然后穿过缓存落到了数据库
设置热点数据永不过期
使用互斥锁排队
缓存雪崩
:大量key同时失效,或者其他原因导致缓存不可用了,大量请求落到数据库
缓存穿透
:缓存和数据库中都没有数据,穿过缓存全部落到数据库
缓存预热
:系统上线后,将相关缓存数据直接加载到缓存系统,这样可以避免用户直接先请求数据库,然后再将数据传给缓存的操作
缓存降级
:降级的情况,就是缓存失效或者缓存服务挂掉的情况,我们也不去访问数据库,直接访问内存部分数据缓存或者直接返回默认数据
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- hzar.cn 版权所有 赣ICP备2024042791号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务