偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

緩存穿透、緩存擊穿、緩存雪崩區(qū)別和解決方案

數(shù)據(jù)庫 其他數(shù)據(jù)庫
前臺請求,后臺先從緩存中取數(shù)據(jù),取到直接返回結(jié)果,取不到時從數(shù)據(jù)庫中取,數(shù)據(jù)庫取到更新緩存,并返回結(jié)果,數(shù)據(jù)庫也沒取到,那直接返回空結(jié)果。

一、緩存處理流程

前臺請求,后臺先從緩存中取數(shù)據(jù),取到直接返回結(jié)果,取不到時從數(shù)據(jù)庫中取,數(shù)據(jù)庫取到更新緩存,并返回結(jié)果,數(shù)據(jù)庫也沒取到,那直接返回空結(jié)果。

二、緩存穿透

描述:

緩存穿透是指緩存和數(shù)據(jù)庫中都沒有的數(shù)據(jù),而用戶不斷發(fā)起請求,如發(fā)起為id為“-1”的數(shù)據(jù)或id為特別大不存在的數(shù)據(jù)。這時的用戶很可能是攻擊者,攻擊會導致數(shù)據(jù)庫壓力過大。

解決方案:

接口層增加校驗,如用戶鑒權(quán)校驗,id做基礎(chǔ)校驗,id<=0的直接攔截;

從緩存取不到的數(shù)據(jù),在數(shù)據(jù)庫中也沒有取到,這時也可以將key-value對寫為key-null,緩存有效時間可以設(shè)置短點,如30秒(設(shè)置太長會導致正常情況也沒法使用)。這樣可以防止攻擊用戶反復用同一個id暴力攻擊

三、緩存擊穿

描述:

緩存擊穿是指緩存中沒有但數(shù)據(jù)庫中有的數(shù)據(jù)(一般是緩存時間到期),這時由于并發(fā)用戶特別多,同時讀緩存沒讀到數(shù)據(jù),又同時去數(shù)據(jù)庫去取數(shù)據(jù),引起數(shù)據(jù)庫壓力瞬間增大,造成過大壓力

解決方案:

設(shè)置熱點數(shù)據(jù)永遠不過期。

加互斥鎖,互斥鎖參考代碼如下:

說明:

  • 緩存中有數(shù)據(jù),直接走上述代碼13行后就返回結(jié)果了
  • 緩存中沒有數(shù)據(jù),第1個進入的線程,獲取鎖并從數(shù)據(jù)庫去取數(shù)據(jù),沒釋放鎖之前,其他并行進入的線程會等待100ms,再重新去緩存取數(shù)據(jù)。這樣就防止都去數(shù)據(jù)庫重復取數(shù)據(jù),重復往緩存中更新數(shù)據(jù)情況出現(xiàn)。
  • 當然這是簡化處理,理論上如果能根據(jù)key值加鎖就更好了,就是線程A從數(shù)據(jù)庫取key1的數(shù)據(jù)并不妨礙線程B取key2的數(shù)據(jù),上面代碼明顯做不到這點。

四、緩存雪崩

描述:

緩存雪崩是指緩存中數(shù)據(jù)大批量到過期時間,而查詢數(shù)據(jù)量巨大,引起數(shù)據(jù)庫壓力過大甚至down機。和緩存擊穿不同的是, 緩存擊穿指并發(fā)查同一條數(shù)據(jù),緩存雪崩是不同數(shù)據(jù)都過期了,很多數(shù)據(jù)都查不到從而查數(shù)據(jù)庫。

解決方案:

緩存數(shù)據(jù)的過期時間設(shè)置隨機,防止同一時間大量數(shù)據(jù)過期現(xiàn)象發(fā)生。

如果緩存數(shù)據(jù)庫是分布式部署,將熱點數(shù)據(jù)均勻分布在不同搞得緩存數(shù)據(jù)庫中。

設(shè)置熱點數(shù)據(jù)永遠不過期。

責任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2020-03-05 09:09:18

緩存原因方案

2023-03-10 13:33:00

緩存穿透緩存擊穿緩存雪崩

2019-10-12 14:19:05

Redis數(shù)據(jù)庫緩存

2022-03-08 00:07:51

緩存雪崩數(shù)據(jù)庫

2019-11-05 14:24:31

緩存雪崩框架

2021-06-05 09:01:01

Redis緩存雪崩緩存穿透

2020-03-16 14:57:24

Redis面試雪崩

2022-05-27 07:57:20

緩存穿透緩存雪崩緩存擊穿

2022-11-18 14:34:28

2025-06-30 01:55:00

2024-03-12 10:44:42

2023-04-14 07:34:19

2023-10-13 08:11:22

2020-10-13 07:44:40

緩存雪崩 穿透

2021-12-25 22:28:27

緩存穿透緩存擊穿緩存雪崩

2023-12-06 13:38:00

Redis緩存穿透緩存擊穿

2020-10-23 10:46:03

緩存雪崩擊穿

2020-12-28 12:37:36

緩存擊穿穿透

2022-07-11 07:36:36

緩存緩存雪崩緩存擊穿

2023-01-18 07:48:32

緩存穿透緩存擊穿redis
點贊
收藏

51CTO技術(shù)棧公眾號