通過expire命令或者pexpire命令,客戶端可以設定乙個鍵的生存時間(ttl)。
過期時間是乙個unix時間戳
redisdb結構的expires字典儲存了資料庫中所有鍵的過期時間。稱這個字典為過期字典
過期字典的鍵是乙個指標,值是乙個long long 型別的整數,儲存了乙個毫秒精度的unix時間戳
過期時間的判定,檢查是否存在於過期字典,如果存在則獲取時間
檢查當前unix時間戳是否大於鍵的過期時間
過期時間的刪除策略問題:
定時刪除,建立乙個定時器定時進行遍歷刪除
惰性刪除,當使用者獲取鍵時才判斷是否過期刪除。
定期刪除,時間區間比定時刪除要打
redis使用的是惰性刪除和定期刪除兩種方式
重點:aof與rdb操作對過期鍵的處理問題
rdb ,在生成rdb檔案時過期時間的鍵是不會被存入到檔案當中
在載入rdb檔案時,如果服務去是主伺服器則會檢查是否有過期鍵,有則忽略。
如果是從服務去,則不進行判斷,全部載入。
aof,在生成檔案時會將所有記錄進行儲存包括過期了的鍵。
讓過期鍵被刪除時程式會向檔案中追加一條del命令,來顯式的進行記錄該鍵已經被刪除。
Redis設計與實現知識點總結 事件
redis伺服器是乙個事件驅動程式,其中包含了兩種型別事件。檔案事件,說白了就是接受客戶端發來的命令然後執行返回結果給客戶端 時間事件,定時觸發的一些事件比如定時持久化,定時刪除過期時間的鍵 檔案事件 redis伺服器使用io多路復用的機制來接受客戶端連線。由於客戶端命令一般都是短資料,短時間連線,...
Redis知識點總結
fifo first in first out,先進先出。判斷被儲存的時間,離目前最遠的資料優先被淘汰。lru least recently used,最近最少使用。判斷最近被使用的時間,目前最遠的資料優先被淘汰。lfu least frequently used,最不經常使用。在一段時間內,資料被...
Redis知識點總結
介紹 redis是單執行緒 底層使用多路io復用 持久化方式 如何保證快速並完整的恢復資料 redis 4.0以後可以混合持久化 以rdb的方式全量持久化記憶體資料保證資料恢復並以增量的方式持久化修改命令保證資料完整性 最終以rdb和aof共存的方式寫入檔案 redis實現分布式鎖 在redis中設...