什麼是 Redis?
Redis是基於C語言開發的開源資料庫,與傳統資料庫不同,Redis資料儲存在記憶體(in-memory database)中,讀寫速度非常快,在快取方向上應用廣泛。 此外,Redis 還儲存 KV 鍵值對資料。 為了滿足不同業務領域的需求,Redis內建了資料型別實現。 此外,Redis 還支援各種開箱即用的集群解決方案的事務和持久化。
為什麼要使用 redis?
1.效能。
如果使用者是第一次訪問資料庫中的某些資料,則該過程會較慢,畢竟是從硬碟中讀取的。 但是如果。
如果使用者訪問的資料是高頻資料,並且不經常變化,那麼我們可以安全地儲存使用者訪問的資料。
在快取中。 也就是說,為了確保使用者下次訪問資料時,他們可以直接從快取中獲取資料。 操作快取。
這是對記憶體的直接操作,所以它非常快。
2.高併發。
像MySQL這樣的資料庫,QPS在1W左右(4核8G),但通過Redis快取很容易實現。
10W+,甚至高達30W+(在單機Redis的情況下,在Redis集群中會更高)。
qps(每秒查詢):伺服器每秒可以執行的查詢數
可以看出,直接操作快取可以維持的資料庫請求數遠大於直接訪問資料庫的數目,因此我們可以考慮這個數字。
資料庫中的某些資料被傳輸到快取中,因此使用者的某些請求直接進入快取,而無需經過資料庫。 然後,我。
這也提高了整個系統的併發性。
除了快取之外,Redis 還能做什麼?
分布式鎖:分布式鎖是使用 Redis 製作分布式鎖的常用方式。
速率限制:一般情況下,您可以使用 Redis + Lua 指令碼來限制速率。
訊息佇列:Redis 內建的列表資料結構可以作為簡單的佇列使用。 redis 5.新增為 0 的流型別更適合訊息佇列。 它類似於 Kafka,具有主題和消費者組的概念,支援訊息持久化和 ACK 機制。
複雜的業務場景:通過Redis和Redis擴充套件(如Redisson)提供的資料結構,我們可以輕鬆完成許多複雜的業務領域,例如通過Bitmap統計活躍使用者,通過排序集維護排行榜。
Redis 常用的資料結構有哪些?
5 種基本資料結構:字串、列表、集合hash (雜湊), zset (有序集.
有 3 種特殊資料結構:hyperloglogs、bitmaps 和 geospatial。
redis為快取資料設定過期時間有什麼用?
通常,我們在設定儲存的快取資料時會設定過期時間。 為什麼?
由於記憶體有限,如果快取中的所有資料都一直保留,則幾分鐘後就會耗盡記憶體。
過期時間除了有助於緩解記憶體消耗之外,是否有其他用處?
在很多情況下,我們的業務需要一定的資料只存在於一定的時間段內,例如,我們的簡訊驗證碼可能只有1分。
使用者登入的令牌可能僅在 1 天內有效。
如果使用傳統資料庫來處理,一般會自己判斷過期時間,比較繁瑣,效能也低很多。
您知道過期資料的刪除策略嗎?
如果設定了一批金鑰僅存活 1 分鐘,那麼 Redis 如何在 1 分鐘後刪除金鑰?
對於過期資料,有兩種常用的刪除策略。
1.延遲刪除:僅在檢索金鑰時檢查資料是否過期。 這是對 CPU 最友好的,但可能會導致太多。
期間鍵尚未刪除。
2.定期刪除:定時提取一批金鑰,刪除過期金鑰。 此外,底層 Redis 將通過限制刪除操作來強制執行刪除操作。
行的長度和頻率,以減少刪除操作對 CPU 時間的影響。
常規刪除對記憶體更友好,延遲刪除對 CPU 更友好。 兩者都各有千秋,所以Redis使用常規刪除+懶惰。
性懶惰風格去除。
但是,僅通過設定金鑰的到期時間,仍然存在問題。 因為可能仍然有定期刪除和延遲刪除,錯過了很多過期時間。
鑰匙。 這會導致大量過期的金鑰在記憶體中累積,然後它們就耗盡了記憶體。
你了解Redis記憶體消除機制嗎?
相關問題:MySQL中有2000W的資料,Redis只有20W的資料,如何保證Redis中的資料是熱資料?
Redis 提供了六種資料消除策略:
1.volatile-lru:從已設定過期時間的資料集中選取最新的資料集。
刪除使用最少的資料。
2.volatile-ttl:從資料集設定的過期時間中選擇要過期的資料。
3.volatile-random:從資料集中選擇已設定過期時間的任何資料。
4.alkeys-r:當沒有足夠的記憶體來容納新寫入的資料時,從金鑰空間中刪除最近使用最少的金鑰(這是最常用的金鑰)。
5.allkeys-random:從資料集中選擇要刪除的任何資料。
快取穿透和快取擊穿有什麼區別?
在快取滲透中,請求的金鑰既不存在於快取中,也不存在於資料庫中。
在快取細分中,請求的金鑰對應於熱資料,該資料存在於資料庫中,但不存在於快取中(通常是因為快取中的資料已過期)。
解決方案是什麼?對於Redis服務不可用的情況:
1.使用Redis集群是為了避免單機出現問題,不能使用整個快取服務。
2.限制以避免同時處理大量請求。
對於熱點快取失效:
1.設定不同的過期時間,例如隨機設定快取的過期時間。
2.快取永不過期(不推薦,使用太差)。
3.設定二級快取。