關於Redis

山有木xi發表於2020-03-27

Redis是一個開源的使用ANSI C語言編寫、支援網路、可基於記憶體亦可持久化的日誌型、Key-Value鍵值對資料庫,並提供多種語言的API

Redis的使用環境

  • 資料高併發的讀寫

  • 海量資料的讀寫

  • 對擴充套件性要求高的資料

Redis的功能

  • 資料快取

  • 分散式鎖

  • 支援事務

  • 支援訊息佇列

  • 支援資料持久化

Redis為啥是單執行緒

因為Redis的瓶頸最有可能是機器記憶體或者網路頻寬,而不是CPU。既然單執行緒容易實現,並且CPU不是瓶頸,那麼自然就使用單執行緒的法案,另外需要知道的是,單執行緒並不代表慢,node.js也是高效能單執行緒

快取穿透

  • 指查詢一個一定不存在的資料時,由於快取是不命中時需要從資料庫查詢,查不到資料則不寫入快取,這將導致這個不存在的資料每次請求都要到資料庫去查詢,造成快取穿透

  • 解決:如果一個查詢返回的資料為空,把這個空結果進行快取,但他的過期時間會很短

Redis持久化

  • RDB:指定的時間間隔能夠對你的資料進行快照儲存

  • AOF:每一個受到的寫命令都透過write函式追加到檔案中

Redis實現分散式鎖

  • Redis分散式鎖,其實就是在系統裡面,佔用一個”位置“,其他程式也要佔用這個“位置”時,成功繼續執行,失敗只能放棄或者稍後再試

  • Redis分散式鎖不能解決超時的問題,如果時間超過了鎖的超時時間就會出現問題

Redis的淘汰策略

  • volatile-lru:從已設定過期時間的資料集中挑選最近最少使用的資料淘汰

  • volatite-ttl: 從已設定過期時間的資料集中挑選即將過期的資料淘汰

  • volatile-random: 從已設定過期時間的資料集中任意選擇資料淘汰

  • allkeys-lru:從資料集中選擇最近最少使用的資料淘汰

  • allkeys-random:從資料集中任意選擇資料淘汰

  • no-enviction:禁止驅逐資料


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69917874/viewspace-2682896/,如需轉載,請註明出處,否則將追究法律責任。

相關文章