大白話redis的雪崩,擊穿和穿透及解決方案

2021-10-06 14:47:50 字數 585 閱讀 2016

大量請求突然因為快取層的失效而進入了mysql,導致mysql資料庫的崩潰

本來你的redis快取層在請求高峰期的時候可以抗下幾千個請求,但是突然有一天你的redis伺服器宕機或者redis出現問題,這時候快取層的突然失效,導致了大量的請求進入mysql,從而導致了mysql伺服器的崩潰,想要重啟,但因為快取層的失效,啟動了也會被新的流量打死

1,配置redis的主從+哨兵

2,可以對資料的請求進行限流

3,本地ehcache 快取

4,redis的持久化,重啟可以快速在磁碟中讀取資料

前端的請求的都是在請求不存在的資料,導致快取層查不到,然後請求到了mysql,導致mysql再次的分崩離析

假如還是那個伺服器,相同的伺服器上,惡意人員請求的大量不存在的資料,就會繞過快取層直接訪問到資料庫,因為這些都是不存在的資料請求,所有mysql將再次崩潰

只要請求到乙個不存在的資料,就寫乙個控制到快取層去 ,然後下次這種請求過來後

就直接去快取層訪問那個空值

前端訪問快取層的乙個key非常的頻繁,但是如果當key突然失效,就會請求mysql,導致mysql崩潰

設定該key的的過期時間為永久不過期

大白話講解ThreadLocal的原理

threadlocal顧名思義,本地執行緒,可以理解為本地執行緒變數,說白了就是操作本地執行緒的區域性變數。下面我們通過原始碼進行說明 首先,我們看一下threadlocal的set方法原始碼實現 public void set t value 通過原始碼我們可以發現,首先獲取了當前執行緒,然後呼叫...

Redis的擊穿和雪崩

有時候被問到redis 擊穿和雪崩,啥?瞬間一臉懵逼。今天看到一篇講解的很透徹 細緻的博文,看了受益良多,特此也分享給各位碼農盆友。主要講的問題 在乙個面臨高併發系統中,快取幾乎成了每個架構師應對高流量的首衝解決方案,但是,乙個好的快取系統,除了和資料庫一致性問題之外,還存在著其他問題,給整體的系統...

Redis穿透 擊穿和雪崩

概念 key對應的資料在資料來源並不存在,每次針對此key的請求從快取獲取不到,請求都會到資料來源,從而可能壓垮資料來源。比如用乙個不存在的使用者id獲取使用者資訊,不論快取還是資料庫都沒有,若黑客利用此漏洞進行攻擊可能壓垮資料庫。解決方案 乙個一定不存在快取及查詢不到的資料,由於快取是不命中時被動...