对象编码
Syntax
OBJECT ENCODING key
- Available since:
- 2.2.3
- Time complexity:
- O(1)
- ACL categories:
-
@keyspace
,@read
,@slow
,
返回存储在
的Redis对象的内部编码
Redis 对象可以用不同的方式编码:
-
字符串可以被编码为:
raw
,普通的字符串编码。int
,表示64位有符号区间内的整数的字符串,以这种方式编码以节省空间。embstr
,嵌入式字符串,这是一种对象,其中内部的简单动态字符串sds
是一个不可修改的字符串,与对象本身分配在同一块中。embstr
可以是长度达到硬编码限制OBJ_ENCODING_EMBSTR_SIZE_LIMIT
或44字节的字符串。
-
列表可以被编码为:
linkedlist
,简单的列表编码。不再使用,是一种旧的列表编码。ziplist
,Redis <= 6.2,一种用于小列表的空间高效编码。listpack
,Redis >= 7.0,一种用于小列表的空间高效编码。quicklist
,编码为ziplists或listpacks的链表。
-
集合可以被编码为:
hashtable
,普通的集合编码。intset
,一种特殊的编码,用于仅由整数组成的小集合。listpack
,Redis >= 7.2,一种用于小集合的空间高效编码。
-
哈希可以编码为:
zipmap
,不再使用,一种旧的哈希编码。hashtable
,普通的哈希编码。ziplist
,Redis <= 6.2,用于小哈希的空间高效编码。listpack
,Redis >= 7.0,用于小哈希的空间高效编码。
-
有序集合可以编码为:
skiplist
,普通的有序集合编码。ziplist
,Redis <= 6.2,用于小型有序集合的空间高效编码。listpack
,Redis >= 7.0,用于小型有序集合的空间高效编码。
-
流可以被编码为:
stream
,编码为列表包的基数树。
所有特殊编码的类型一旦执行了使Redis无法保留空间节省编码的操作,就会自动转换为通用类型。
RESP2 回复
以下之一:
- Nil reply: 如果键不存在。
- Bulk string reply: 对象的编码。
RESP3 回复
以下之一:
- Null reply: 如果键不存在。
- Bulk string reply: 对象的编码。