redis基礎知識歸納

2021-10-07 19:11:04 字數 1118 閱讀 3517

string、hash、list、set、sortedset,還有hyperloglog,geo,pub/sub。

會引發的問題:

大量的key過期時間設定過於集中時,過期時間點一到,redis可能會出現短暫的卡頓。嚴重情況下會出現快取雪崩。

怎麼解決:

一般在時間上加乙個隨機值,使過期時間分散些。

造成快取雪崩的說明:

——場景:電商首頁經常使用定時任務重新整理快取。

——特殊情況下:可能大量資料失效時間特別集中,如果在失效時間點湧入大量使用者,就有可能造成快取雪崩。

先用setnx來爭搶鎖,搶到後,用expire給鎖加乙個過期時間來防止忘記釋放鎖。

——特殊情況下:setnx執行之後,還沒用expire之前,程序意外crash或者重啟維護了會導致這個鎖永遠得不到釋放。

——建議:set指令有非常複雜的引數,可以同時把setnx和expire合成一條指令。

使用keys指令可以掃出指定模式的key列表。

——特殊情況下:如果這個redis正在給線上的業務提供服務。由於redis是單執行緒的特性,keys指令會導致執行緒阻塞一段時間。線上服務會停頓,直到keys指令執行完畢,服務才能恢復。

——建議:使用scan指令,scan指令是可以無阻塞的提取出指定模式的key列表。但是會有一定的重複概率,需要在客戶端做一次去重。但是整體花費時間會比keys指令長。

一般使用list結構作為佇列,rpush生產訊息,lpop消費訊息。

——特殊情況下:當lpop沒有訊息的時候。

——建議:要適當sleep一會再重試,或者使用blpop阻塞住直到有訊息到來。

——能不能生產一次消費多次?使用pub/sub主題訂閱者模式,可以實現1:n的訊息佇列。

rdb做映象全量持久化,aof做增量持久化。

在redis重啟例項時,會使用rdb持久化檔案,重新構建記憶體,再使用aof重放近期的操作指令,來實現完整恢復到重啟前狀態。

可以把rdb理解為一整個表全量的資料,aof理解為每次操縱的日誌。

——特殊情況下:機器掉電資料會怎麼樣?取決於aof日誌sync屬性的配置。

——建議:不要求效能情況下,每條寫指令時都sync一下磁碟,就不會丟失資料;高效能要求下,一般使用定時sync,比如1秒一次,這時候最多丟失1秒的資料。

Python基礎知識歸納

python 基礎教程 python 基礎教程 python 簡介 python 環境搭建 python 中文編碼 python 基礎語法 python 變數型別 python 運算子 python 條件語句 python 迴圈語句 python while 迴圈語句 python for 迴圈語句...

mysql 基礎知識歸納

sql語言分類 ddl 資料庫定義語言 dml 資料庫操控語言 dql 資料庫查詢語言 dcl 資料庫控制語言 ddl 建立資料庫語法 create database 資料庫名 資料庫名要求 區分大小寫 唯一性不能使用關鍵字如 create select 不能使用數字和特殊符號 如 用單詞或者拼音即...

SQL基礎知識歸納總結

sql基礎知識歸納總結,有需要的朋友可以參考下。1 sql語句主要分類 1 ddl data definition languages,資料定義語言,常用的語句關鍵字主要包括create drop alter等 2 dml data manipulation language,資料操作語句,常用的語...