缓存中常见的概念及解决方案
緩存中常見的概念及解決方案
緩存穿透
1、概念
用戶查詢數(shù)據(jù),在數(shù)據(jù)庫中以及緩存中(redis)都查詢不到,導(dǎo)致每次請求來時,緩存(redis)中查詢一次,數(shù)據(jù)庫查詢一次,最后返回空,每次請求都會有倆次無用的查詢,緩存命中率低
2、解決方案
1) 對null值設(shè)置緩存,每隔一段時間過期
2) 使用布隆過濾器緩存需要的值,直接過濾 掉找不到值得key
緩存雪崩
1、概念
緩存(redis)服務(wù)掛掉,緩存在同一時間發(fā)生大面積的實(shí)效,請求每次查完數(shù)據(jù)未能將數(shù)據(jù)緩存倒數(shù)據(jù)庫中,導(dǎo)致所有的請求都會去查詢數(shù)據(jù)庫,造成同一時間數(shù)據(jù)庫的cpu及內(nèi)存負(fù)載過高的問題,甚至宕機(jī)。
2、解決方案
1)redis高可用,使用哨兵部署或者集群部署模式,保證緩存服務(wù)的高可用
2)為key設(shè)置不同的過期時間,讓key的過期時間均衡分布,防止同一時間緩存大面積的實(shí)效。
3)使用鎖和隊列,對請求進(jìn)行異步處理,降低數(shù)據(jù)庫的壓力。
4)使用緩存降級策略(使用guava或ehcache等本地緩存 或者對服務(wù)訪問進(jìn)行限流、熔斷及降級)
緩存擊穿
1、概念
某個key非常熱點(diǎn),在不停的坑著大并發(fā),大并發(fā)集中對這一個點(diǎn)進(jìn)行訪問,當(dāng)這個key失效的瞬間,持續(xù)的高并發(fā)會擊破緩存,直接請求數(shù)據(jù)庫,導(dǎo)致數(shù)據(jù)庫的cpu及內(nèi)存負(fù)載過高,甚至宕機(jī)。
2、解決方案
1)設(shè)置某些熱點(diǎn)key的過期時間(延長或者永不過期)
2) mutex key互斥鎖
轉(zhuǎn)載于:https://www.cnblogs.com/jakaBlog/p/10759519.html
總結(jié)
以上是生活随笔為你收集整理的缓存中常见的概念及解决方案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2017-11-17 为Python添加
- 下一篇: 抢攻5G网络功能虚拟化,英特尔推专用FP