1. 程式人生 > 其它 >509. 斐波那契數(java實現)--LeetCode

509. 斐波那契數(java實現)--LeetCode

除了前面介紹過的typeencodingptrrefcount四個屬性之外,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選項所設定的上限值時, 空轉時長較高的那部分鍵會優先被伺服器釋放, 從而回收記憶體。