W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
除了前面介紹過的 type
、 encoding
、 ptr
和 refcount
四個屬性之外, redisObject
結構包含的最后一個屬性為 lru
屬性, 該屬性記錄了對象最后一次被命令程序訪問的時間:
typedef struct redisObject {
// ...
unsigned lru:22;
// ...
} robj;
OBJECT IDLETIME 命令可以打印出給定鍵的空轉時長, 這一空轉時長就是通過將當前時間減去鍵的值對象的 lru
時間計算得出的:
redis> SET msg "hello world"
OK
# 等待一小段時間
redis> OBJECT IDLETIME msg
(integer) 20
# 等待一陣子
redis> OBJECT IDLETIME msg
(integer) 180
# 訪問 msg 鍵的值
redis> GET msg
"hello world"
# 鍵處于活躍狀態(tài),空轉時長為 0
redis> OBJECT IDLETIME msg
(integer) 0
注意
OBJECT IDLETIME 命令的實現(xiàn)是特殊的, 這個命令在訪問鍵的值對象時, 不會修改值對象的 lru
屬性。
除了可以被 OBJECT IDLETIME 命令打印出來之外, 鍵的空轉時長還有另外一項作用: 如果服務器打開了 maxmemory
選項, 并且服務器用于回收內存的算法為 volatile-lru
或者 allkeys-lru
, 那么當服務器占用的內存數(shù)超過了 maxmemory
選項所設置的上限值時, 空轉時長較高的那部分鍵會優(yōu)先被服務器釋放, 從而回收內存。
配置文件的 maxmemory
選項和 maxmemory-policy
選項的說明介紹了關于這方面的更多信息。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: