redis深入了解(一)

2021-08-17 17:43:35 字數 1324 閱讀 2558

redis的常見問題:

1.redis是記憶體版資料庫,如果記憶體滿了怎麼辦?

2.redis是否是執行緒安全的資料庫

redis 是

執行緒安全

redis是乙個開源,先進的

key-value

儲存,並用於構建高效能,可擴充套件的web應用程式的完美解決方案,是

執行緒安全

的。 redis三個主要特點:

redis是乙個單執行緒資料庫(單通道)

redis資料庫完全在記憶體中,使用磁碟僅用於永續性。

相比許多鍵值

資料儲存

,redis擁有一套較為豐富的資料型別。

redis可以將資料複製到任意數量的從伺服器。

3.redis的hash槽,你是怎麼理解的?(redis如何儲存的)

redis共有16384個hash槽,時固定的不能改變,無論集群節點多少。

hash槽將會動態的分配給每個伺服器

hash槽存滿了怎麼辦?

注意:hash槽不是用來儲存資料的,時用來計算該把資料儲存在哪個伺服器裡。相當於倉庫的門,

4.redis快取穿透,快取擊穿,快取雪崩?

設計乙個快取系統,不得不要考慮的問題就是:快取穿透、快取擊穿與失效時的雪崩效應。

快取穿透是指查詢乙個在快取和資料庫中不存在的資料,

問題:這個資料庫訪問量瞬間增大,資料庫可能發生io阻塞,雪崩。

解決:如果發現資料庫沒有資料,放乙個空字元,並且設定過期時間

有很多種方法可以有效地解決快取穿透問題,最常見的則是採用布隆過濾器,將所有可能存在的資料雜湊到乙個足夠大的bitmap中,乙個一定不存在的資料會被 這個bitmap攔截掉,從而避免了對底層儲存系統的查詢壓力。另外也有乙個更為簡單粗暴的方法(我們採用的就是這種),如果乙個查詢返回的資料為空(不管是數 據不存在,還是系統故障),我們仍然把這個空結果進行快取,但它的過期時間會很短,最長不超過五分鐘。

快取中有個key過期了,恰好此時這個key面臨乙個高併發查詢,此時快取中沒有資料,併發壓力瞬間被轉移到資料庫,造成資料庫雪崩。 。

redis快取之前加鎖進行控制,當第一次訪問沒有值,查詢資料庫放入

快取中很多key同時過期,恰好此時這些key面臨高併發查詢,發現快取中資料消失,這些併發壓力將會瞬間轉移給資料庫,資料庫面臨非常高的併發壓力,傳送雪崩。

讓快取的key不同時過期,讓redis過期時間5分鐘時間+隨機數時間 過期

Redis (六 深入了解redis核心)

記憶體淘汰 redis記憶體不足時,有兩種處理方式 1 啟用虛擬記憶體 將vm enabled設定為yes 2 啟用記憶體淘汰 將maxmemory設定為乙個大於0的整數 redis的使用記憶體大於最大分配可用記憶體時,開始進行淘汰,memcache只有lru演算法,redis有 1 隨機淘汰 從資...

深入了解A

一 前言 在這裡我將對a 演算法的實際應用進行一定的 並且舉乙個有關a 演算法在最短路徑搜尋的例子。值得注意的是這裡並不對a 的基本的概念作介紹,如果你還對a 演算法不清楚的話,請看姊妹篇 初識a 演算法 這裡所舉的例子是參考amit主頁中的乙個源程式,使用這個源程式時,應該遵守一定的公約。二 a ...

深入了解A

一 前言 在這裡我將對a 演算法的實際應用進行一定的 並且舉乙個有關a 演算法在最短路徑搜尋的例子。值得注意的是這裡並不對a 的基本的概念作介紹,如果你還對a 演算法不清楚的話,請看姊妹篇 初識a 演算法 這裡所舉的例子是參考amit主頁中的乙個源程式,使用這個源程式時,應該遵守一定的公約。二 a ...