1. 程式人生 > >Redis內部原理

Redis內部原理

redis預設建立16個數據庫,通過select語句可以切換資料庫,如

select 2

可用通過expire命令或者pexpire命令,以秒或毫秒精度為資料庫中的某個鍵設定生存時間,到期後伺服器自動刪除鍵

set key value
expire key 5

TTL命令和PTTL命令返回一個鍵的生存時間

TTL key

PERSIST命令可以移除一個鍵的生存時間

PERSIST key

過期刪除策略有三種
定時刪除 建立定時器,讓定時器來刪除
惰性刪除 獲取鍵時,檢查是否過期,過期則刪除
定期刪除 每隔段時間,程式對資料庫進行一次檢查,刪除過期鍵
Redis用到了2,3兩種策略

Redis2.8版本增加了資料庫通知功能,客戶端通過訂閱給定的頻道和模式,來獲知資料庫中鍵的變化,以及資料庫中命令的執行情況

Redis資料庫主要由dict和expires兩個字典構成,其中dict字典負責儲存鍵值對,而expires字典則負責儲存鍵的過期時間

Redis提供了RDB持久化功能,這個功能可以將Redis在記憶體中的資料庫狀態儲存到磁盤裡面,RDB持久化即可以手動執行,也可以根據伺服器配置選項定期執行。
手動載入使用save命令和bgsave命令。伺服器配置儲存後臺呼叫bgsave命令。使用save選擇設定多個儲存條件時,只要其中一個條件被滿足,伺服器就會執行BGSAVE命令
當伺服器啟動時,如果使用者沒有設定,伺服器會為save選項設定預設條件
除了RDB持久化功能之外,Redis還提供AOF(Append Only File)持久化功能。AOF持久化通過儲存Redis伺服器所執行的寫命令來記錄資料庫狀態.
在Redis中,使用者可以通過執行SLAVEOF命令或者設定slaveof選項,讓一個伺服器去複製另一個伺服器

127.0.0.1:12345> SLAVEOF 127.0.0.1 6379

Sentinel是Redis的高可用性解決方案,由一個或多個Sentinel例項組成的Sentinel系統可以監視任意多個主伺服器,以及這些主伺服器進入下線狀態時,自動將下線主伺服器屬下的某個從伺服器升級為新的主伺服器,然後由新的主服務代替已下線的主伺服器繼續處理命令請求.

Redis的慢查詢日誌功能用於記錄執行時間超過給定時長的命令請求。可以通過伺服器配置修改響應的選項.SLOWLOG GET 命令檢視伺服器所儲存的慢查詢日誌

通過執行MONITOR命令,客戶端可以將自己變為一個監視器。每當伺服器處理一條命令請求時,還會將關於這條命令請求的資訊傳送給所有監視器.