天天看點

5.Redis中的對象

Redis内部使用一個redisObject對象來表示所有的key和value。

5.Redis中的對象

OBJECT 指令可以在内部調試(debugging)給出keys的内部對象,它用于檢查或者了解你的keys是否用到了特殊編碼 的資料類型來存儲空間z。 當redis作為緩存使用的時候,你的應用也可能用到這些由OBJECT指令提供的資訊來決定應用層的key的驅逐政策(eviction policies)

OBJECT 支援多個子指令:

• OBJECT REFCOUNT 該指令主要用于調試(debugging),它能夠傳回指定key所對應value被引用的次數.

• OBJECT ENCODING 該指令傳回指定key對應value所使用的内部表示(representation)(譯者注:也可以了解為資料的壓縮方式).

• OBJECT IDLETIME 該指令傳回指定key對應的value自被存儲之後空閑的時間,以秒為機關(沒有讀寫操作的請求) ,這個值傳回以10秒為機關的秒級别時間,這一點可能在以後的實作中改善

對象可以用多種方式編碼:

• 字元串可以被編碼為 raw (正常字元串) 或者int (用字元串表示64位無符号整數這種編碼方式是為了節省空間).

• 清單類型可以被編碼為ziplist 或者 linkedlist. ziplist 是為了節省較小的清單空間而設計一種特殊編碼方式.

• 集合被編碼為 intset 或者 hashtable. intset 是為了存儲數字的較小集合而設計的一種特殊編碼方式.

• 哈希表可以被編碼為 zipmap 或者hashtable. zipmap 是專為了較小的哈希表而設計的一種特殊編碼方式

• 有序集合被編碼為ziplist 或者 skiplist 格式. ziplist可以表示較小的有序集合, skiplist 表示任意大小多的有序集合.

一旦你做了一個操作讓redis無法再使用那些節省空間的編碼方式,它将自動将那些特殊的編碼類型轉換為普通的編碼類型.

傳回值

不同的子指令會對應不同的傳回值.

• refcount 和 idletime 傳回整數.

• encoding 傳回編碼類型.

如果你嘗試檢查的參數缺失,将會傳回為空