緩存雪崩: 緩存同一時間大面積的失效,所以後面的請求都會落到數據庫上,造成數據庫短時間內承受大量請求而崩掉
解決方案: 事前:儘量保證整個redis集羣的高可用性,發現機器宕機儘快補上
事中:本地ehcache緩存+hystrix限流&降級,避免MySQL崩掉
事後:利用redis持久化機制保存的數據儘快恢復緩存
緩存穿透: 簡答點說就是大量請求的Key根本不存在於緩存中,導致請求直接到了數據庫上,根本沒有經過緩存這一次層.
解決方案: 最基本的就是首先做好參數校驗,一些不合法的參數請求直接拋出異常信息返回給客戶端.比如查詢的數據庫id不能小於0,傳入的郵箱格式不對的時候直接返回錯誤消息給客戶端等等.