場景:同一時間大面積的redis key失效,導致所有的請求打到資料庫上
解決辦法:
原理:不要讓redis key同時失效
場景:在大量請求下,某熱點key突然失效,導致所有請求都打到資料庫上
解決辦法:
場景:惡意攻擊者專門訪問資料庫中不存在的資料,導致穿過redis直接打到資料庫上
如:id=-1的請求
解決辦法:
附:reids 常問面試題:
1.redis 是單執行緒還是多執行緒?
答:單執行緒
2.redis是單執行緒為什麼那麼快?答:
3.什麼事i/o多路復用機制?
使用者首先將需要進行io操作的socket新增到select中,然後阻塞等待select系統呼叫返回。當資料到達時,socket被啟用,select函式返回。使用者執行緒正式發起read請求,讀取資料並繼續執行。這樣使用者可以註冊多個socket,然後不斷地呼叫select讀取被啟用的socket,redis服務端將這些socke置於佇列中,然後,檔案事件分派器,依次去佇列中取,**到不同的事件處理器中,提高讀取效率。
採用多路 i/o 復用技術可以讓單個執行緒高效的處理多個連線請求(儘量減少網路 io 的時間消耗),多路i/o復用模型是利用 select、poll、epoll 可以同時監察多個流的 i/o 事件的能力,在空閒的時候,會把當前執行緒阻塞掉,當有乙個或多個流有 i/o 事件時,就從阻塞態中喚醒,於是程式就會輪詢一遍所有的流(epoll 是只輪詢那些真正發出了事件的流),並且只依次順序的處理就緒的流,這種做法就避免了大量的無用操作,從而提高效率。
Redis快取穿透,穿透擊穿,快取雪崩
乙個一定不存在快取及查詢不到的資料,由於快取是不命中時被動寫的,並且出於容錯考慮,如果從儲存層查不到資料則不寫入快取,這將導致這個不存在的資料每次請求都要到儲存層去查詢,失去了快取的意義。有很多種方法可以有效地解決快取穿透問題,最常見的則是採用布隆過濾器,將所有可能存在的資料雜湊到乙個足夠大的bit...
redis 快取穿透 擊穿 雪崩
介面層增加校驗,如使用者鑑權校驗,id做基礎校驗,id 0的直接攔截 從快取取不到的資料,在資料庫中也沒有取到,這時也可以將key value對寫為key null,快取有效時間可以設定短點,如30秒 設定太長會導致正常情況也沒法使用 這樣可以防止攻擊使用者反覆用同乙個id暴力攻擊 public o...
redis快取穿透,擊穿,雪崩
快取穿透 描述 快取穿透是指快取和資料庫中都沒有的資料,而使用者不斷發起請求,多來自於黑客攻擊。由於快取是不命中時被動寫的,並且出於容錯考慮,如果從儲存層查不到資料則不寫入快取,這將導致這個不存在的資料每次請求都要到儲存層去查詢,失去了快取的意義。在流量大時,可能db就掛掉了,要是有人利用不存在的k...