SegmentFault 思否技術週刊 Vol.51 -- 掘地三尺搞定 Redis!

Beverly發表於2022-11-23

REmote DIctionary Server(Redis) 是一個由 Salvatore Sanfilippo 寫的 key-value 儲存系統。Redis 提供了一些豐富的資料結構,包括 lists, sets, ordered sets 以及 hashes ,當然還有和 Memcached 一樣的 strings 結構 . Redis 當然還包括了對這些資料結構的豐富操作。

文章推薦

《Redis資料結構與內部編碼》

Redis 對外的資料結構包括:字串(string)、雜湊(hash)、列表(list)、集合(set)以及有序集合(zset)。這些資料結構都有對應的 API 可以在客戶端使用。如上每一種資料結構在 Redis 內部又對應不只一種內部編碼實現。Redis 根據儲存的資料選擇比較合適的內部編碼以實現記憶體與效能之間的平衡。

《解決Redis連線報錯"ERR max number of clients reached"》

  • redis使用過程當中一般會由客戶端進行連線資源管理,例如分配連線、監控連線狀態、回收連線池資源
  • 預設設定下,redis不會主動斷開連線
  • redistimeout引數配置項,預設單位是秒,當timeout是0的時候,redis不會主動關閉連線
  • 由於redis預設的最大連線數是10000,但是一直不關閉連線的話隨著時間推移,連線越積越多,最終導致沒有連線可用

最終導致redis客戶端連線的時候報錯,顯示"ERR max number of clients reached"

《掘地三尺搞定 Redis 與 MySQL 資料一致性問題》

Redis 擁有高效能的資料讀寫功能,被我們廣泛用在快取場景,一是能提高業務系統的效能,二是為資料庫抵擋了高併發的流量請求。
把 Redis 作為快取元件,需要防止出現以下的一些問題,否則可能會造成生產事故。
Redis 快取滿了怎麼辦?
快取穿透、快取擊穿、快取雪崩如何解決?
Redis 資料過期了會被立馬刪除麼?
Redis 突然變慢了如何做效能排查並解決?
Redis 與 MySQL 資料一致性問題怎麼應對?

《 Redis 都有哪些使用場景》

Redis 作為一種記憶體型的非關係型的資料庫,不管在網際網路大廠,小廠,大專案和小專案中,幾乎都會被使用。為什麼 Redis 會受到如此青睞呢?關於這個問題,可能很多的程式設計師只是看著別人用而用,缺乏對 Redis 一個全面的瞭解。

《記一次Redis O(n)命令拖慢介面》

某天突然收到運維告警訊息,反饋產線有介面在某一段時間慢了,隨之效能最佳化的JIRA任務也開過來了,大致內容如下:

API告警 - Base Tomcat Accesslog: 
微服務: xxxapi 
介面: /xxxx/xxx POST 
在 [ 2022/xx/xx 10:42:00 ~ 10:43:00 ] 時間視窗,RT > 閾值(300ms) 發生 141 次。 

公司內部對API的響應時間要求是低於300ms,超過的都屬於有效能問題的介面,接下來就排查吧。

《 Redis -主從同步原理》

Redis 主從模式中,一個高可用的 Redis 服務由一個 Redis 主節點( Master,後續簡稱為主節點)和若干 Redis 從節點(Slave,後續簡稱為從節點)組成。
Redis 中採用讀寫分離來保證主節點和從節點之間的資料一致性,具體實現如下...

《 Redis 做介面限流,一個註解的事!》

Redis 除了做快取,還能幹很多很多事情:分散式鎖、限流、處理請求介面冪等性。。。太多太多了~
今天想和小夥伴們聊聊用 Redis 處理介面限流,這也是最近的 TienChin 專案涉及到這個知識點了,我就拎出來和大家聊聊這個話題,後面影片也會講。

《 Redis 知識點&面試題總結》

Redis 是一個支援持久化的記憶體資料庫,透過持久化機制把記憶體中的資料同步到硬碟檔案來保證資料持久化。當 Redis 重啟後透過把硬碟檔案重新載入到記憶體,就能達到恢復資料的目的。
實現:單獨建立一個 fork()子程式,將當前父執行緒的資料庫檔案複製到子程式的記憶體中,然後由子程式寫入到臨時檔案中,持久化的過程就結束了,再用這個臨時檔案替換上次的快照檔案,然後子程式退出,記憶體釋放。

問答推薦


PS:大家想看哪些方面的技術內容,可以在評論區留言喔 ~
如有問題可以新增小姐姐微信~
image.png

相關文章