Redis筆記之 redis常見問題

2021-10-10 10:36:59 字數 1573 閱讀 5538

目錄

一、key的生存時間

二、redis的淘汰機制

三、redis 快取常見問題

快取穿透

快取擊穿

快取雪崩

快取傾斜

當redis記憶體不足時,再繼續往redis中新增資料,這時會根據設定的規則觸發淘汰機制。淘汰機制主要有以下幾種:

指定淘汰機制的方式:maxmemory-policy 具體策略,設定redis的最大記憶體:maxmemory 位元組大小

lru,即:最近最少使用淘汰演算法(least recently used)。lru是淘汰最長時間沒有被使用的。

lfu,即:最不經常使用淘汰演算法(least frequently used)。lfu是淘汰一段時間內,使用次數最少的。

random,隨機淘汰演算法

什麼是快取穿透?

快取穿透就是當使用者需要查詢的資料,redis快取中不存在,並且我們的資料庫中也不存在。當查詢redis中沒有的資料時,每次請求都會進到資料庫,這樣就造成了快取穿透。

如何避免?

1.當發現有使用者查詢的資料redis中沒有,資料庫中也沒有時,對使用者的ip進行限制

2.如果是通過整型的自增主鍵去查詢,那麼可以將資料庫表中id的最大值存到redis中,使用者每次訪問都去redis中比較一下id

3.如果主鍵為非整型,那麼可以將所有的主鍵存到redis的set集合中,使用者每次訪問都去redis中查詢主鍵是否存在

什麼是快取擊穿?

快取擊穿就是redis中快取的熱點資料突然到期,這時大量的使用者都會去訪問資料庫,嚴重可能導致資料庫宕機

如何避免?

1.在訪問redis中沒有資料時,對使用者進行限流(加鎖)。避免大量請求訪問資料庫

2.也可以將熱點資料的生存時間去掉

什麼是快取雪崩?

快取雪崩就是redis中大量的熱點資料同時到期,大量的使用者都會去訪問資料庫,嚴重可能導致資料庫宕機

如何避免?

可以給熱點資料設定乙個隨機的生存時間(可以使30~60之間),避免大量資料同時到期

什麼是快取傾斜?

快取傾斜就是一台redis中熱點資料過多,導致redis壓力過大而宕機,同樣的這時會又去到資料庫

如何避免?

可以搭建redis的主從架構、配置多個從節點來分擔壓力

如有錯誤,請指正。。。謝謝!

Redis學習筆記之Redis的物件

型別與編碼 typedef struct redisobject robj 1.字串物件 編碼 int,整數值,而且這個整數值可以用long型別來表示 raw,字串值,而且字串值的長度大於32位元組,sds的記憶體與redisobject記憶體不連續 embstr,字串值,而且字串值的長度小於32位...

Redis(七)redis常見問題

一般的快取系統,都是按照key去快取查詢,如果不存在對應的value,就應該去後端系統查詢 比如db 一些惡意的請求會故意查詢不存在的key,請求量很大,就會對後端系統造成很大的壓力。這就叫做快取穿透。1 對查詢結果為空的情況也進行快取,快取時間設定短一點,或者該key對應的資料insert了之後清...

Redis筆記一之Redis簡介與安裝

本例的redis版本是3.0 簡介 1 redis是基於記憶體的資料庫。2 redis中沒有表的概念它是使用鍵值的方式儲存資料,它支援多種資料型別主要的有五種,分別是string,list,hash,set,sorted set。3 redis是單執行緒的資料庫它的所有命令都是執行緒安全的。4 它支...