509. 斐波那契數(java實現)--LeetCode
阿新 • • 發佈:2020-12-23
除了前面介紹過的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" # 鍵處於活躍狀態,空轉時長為 0 redis> OBJECT IDLETIME msg (integer) 0
注意
OBJECT IDLETIME命令的實現是特殊的, 這個命令在訪問鍵的值物件時, 不會修改值物件的lru
屬性。
除了可以被OBJECT IDLETIME命令打印出來之外, 鍵的空轉時長還有另外一項作用: 如果伺服器打開了maxmemory
選項, 並且伺服器用於回收記憶體的演算法為volatile-lru
allkeys-lru
, 那麼當伺服器佔用的記憶體數超過了maxmemory
選項所設定的上限值時, 空轉時長較高的那部分鍵會優先被伺服器釋放, 從而回收記憶體。