redis讀取不到資料 Redis快取機制介紹

2021-10-12 18:21:06 字數 1306 閱讀 5526

redis是一款高效能的記憶體型鍵值對(key-value)資料庫,是大型**和幾乎所有高併發場景必備的中介軟體,主要用於快取熱點資料,從而大大減輕了後端資料庫的請求壓力,但是因為redis把所有資料都儲存在記憶體中,所以,在把redis用做快取的過程中,常常會遇到以下的一些問題,例如快取更新、快取雪崩、快取穿透、快取擊穿、快取替換等。

一、快取更新

快取更新的策略有很多,這裡介紹兩種比較主要的情況:

第一種情況,先更新資料庫再同步更新快取或者先更新快取再同步更新資料庫,其實都屬於write through,同步更新的好處在於可以很好的保持資料的一致性,但是缺點在於同步更新時,必然會影響效能。

第二種情況,先更新快取,然後再非同步寫回資料庫,也就是write back,非同步寫回的好處在於不會影響快取的高效能,能夠快速響應客戶端,但是缺點在於在資料非同步寫回到資料庫之前,存在快取和資料庫資料短暫不一致。

二、快取雪崩

快取雪崩是指,在同一時刻有大量快取失效,導致大量的請求到達後端資料庫,從而使資料庫承受巨大的壓力。

應對措施:

使用redis快取時,應當避免出現大量快取資料同時失效,建議在設定鍵過期時間時,將過期時間加上一定範圍的隨機值,從而達到增加隨機失效時間的目的,避免過多的快取key在同一時間失效。

2. 提高redis本身的可靠性,比如使用主從模式或者集群模式。

三、快取穿透

快取穿透是指,從redis快取讀取不到資料,同時也從資料庫讀取不到資料,這樣導致redis快取無法更新,每次請求也都要查詢資料庫。

應對措施:

將redis快取和資料庫都查不到資料的快取key設定成null值,這樣客戶端將從快取拿到空值,因此也不會請求到資料庫

前段元件限流

在閘道器進行介面呼叫的檢驗,防止惡意攻擊

四、快取擊穿

快取擊穿是指,某個熱點資料失效,導致大量請求該熱點資料的流量到達後端資料庫。

應對措施:對熱點資料不設定過期時間

五、快取替換

redis將所有資料都儲存在記憶體,而記憶體空間是有限的,當快取中資料存滿了之後,必然要採取用新資料替換掉快取中舊資料的操作。

常用替換方法:

allkeys-lru

優先移除最近未使用的key,這種替換演算法適用於有冷熱資料之分的場景,即淘汰冷資料,留下熱資料。

2. allkeys-random

隨機淘汰key,這種替換演算法適用於無冷熱資料之分的場景,即淘汰任意鍵都不對業務造成影響。

Redi學筆記 Redis簡介

易擴充套件 nosql資料庫種類繁多,但是乙個共同的特點都是去掉關聯式資料庫的關係型特性。資料之間無關係,這樣就非常容易擴充套件。也無形之間,在架構的層面上帶來了可擴充套件的能力。高效能 nosql資料庫都具有非常高的讀寫效能,尤其在大資料量下,同樣表現優秀。這得益於它的無關係性,資料庫的結構簡單。...

Redis存讀取資料

redis中包括四種資料型別,strings,lists,sets,sorted sets 接下來我們一一看這四種型別的用法 1.連線redis伺服器 redisclient client private void button1 click object sender,eventargs e 2....

Python讀取redis資料

以讀取redis的list資料型別為例 1 首先匯入redis類 2 使用redis.redis連線redis,引數為host和port 3 取特定長度的字段使用lrange函式。lrange self,name,start,end 結果為python的list型別 如下是個小例子 import r...