?
本文檔使用 php中文網(wǎng)手冊(cè) 發(fā)布
OBJECT subcommand [arguments [arguments ...]]
自2.2.3起可用。
時(shí)間復(fù)雜度: O(1)適用于所有當(dāng)前實(shí)施的子命令。
OBJECT 命令允許檢查與鍵相關(guān)的 Redis 對(duì)象的內(nèi)部。對(duì)于調(diào)試或了解您的密鑰是否使用特殊編碼的數(shù)據(jù)類型以節(jié)省空間非常有用。在使用 Redis 作為緩存時(shí),您的應(yīng)用程序也可能使用 OBJECT 命令報(bào)告的信息來(lái)實(shí)施應(yīng)用程序級(jí)別密鑰驅(qū)逐策略。
OBJECT命令支持多個(gè)子命令:
OBJECT REFCOUNT <key>
返回與指定鍵相關(guān)聯(lián)的值的引用數(shù)。該命令主要用于調(diào)試。
OBJECT ENCODING <key>
返回用于存儲(chǔ)與鍵關(guān)聯(lián)的值的內(nèi)部表示形式。
OBJECT IDLETIME <key>
返回自指定鍵存儲(chǔ)的對(duì)象空閑以來(lái)的秒數(shù)(未通過讀取或?qū)懭氩僮髡?qǐng)求)。雖然該值以秒為單位返回,但此計(jì)時(shí)器的實(shí)際分辨率為10秒,但在將來(lái)的實(shí)施中可能會(huì)有所不同。
對(duì)象可以用不同的方式進(jìn)行編碼:
字符串可以編碼為raw
(普通字符串編碼)或int
(以64位有符號(hào)間隔表示整數(shù)的字符串以這種方式編碼以節(jié)省空間)。
列表可以編碼為ziplist
或linkedlist
。本ziplist
是用來(lái)節(jié)省空間的小型列出特定表示。
集可以編碼為intset
或hashtable
。這intset
是一個(gè)特殊的編碼,用于僅由整數(shù)組成的小集合。
哈??梢跃幋a為ziplist
或hashtable
。這ziplist
是一個(gè)用于小哈希的特殊編碼。
排序集可以編碼為ziplist
或skiplist
格式。至于列表類型,小的排序集合可以使用特殊編碼ziplist
,而skiplist
編碼是與任何大小的排序集合一起工作的編碼。
所有特殊編碼的類型會(huì)在您執(zhí)行操作后自動(dòng)轉(zhuǎn)換為通用類型,使Redis無(wú)法保留節(jié)省空間的編碼。
不同的子命令使用不同的返回值。
子命令refcount
和idletime
返回整數(shù)。
子命令encoding
返回批量回復(fù)。
如果您嘗試檢查的對(duì)象丟失,則返回空批量答復(fù)。
redis> lpush mylist "Hello World"(integer) 4 redis> object refcount mylist(integer) 1 redis> object encoding mylist"ziplist" redis> object idletime mylist(integer) 10
在以下示例中,您可以看到一旦Redis不再能夠使用節(jié)省空間的編碼,編碼如何更改。
redis> set foo 1000OK redis> object encoding foo"int" redis> append foo bar(integer) 7 redis> get foo"1000bar" redis> object encoding foo"raw"