OBJECT ENCODING
语法
OBJECT ENCODING key
- 可用版本
- Redis 开源版 2.2.3
- 时间复杂度
- O(1)
- ACL 类别
-
@keyspace
,@read
,@slow
,
返回存储在 <key>
处的 Redis 对象的内部编码。
Redis 对象可以使用不同的方式进行编码
-
字符串可以编码为
raw
,普通字符串编码。int
,表示 64 位有符号整数的字符串,以这种方式编码以节省空间。embstr
,内嵌字符串,是一种对象,其中内部简单动态字符串sds
是一个不可修改的字符串,与对象本身分配在同一块内存中。embstr
的长度可达硬编码限制OBJ_ENCODING_EMBSTR_SIZE_LIMIT
或 44 字节。
-
列表可以编码为
linkedlist
,简单列表编码。已不再使用,是一种旧的列表编码。ziplist
,Redis <= 6.2,用于小列表的高效空间编码。listpack
,Redis >= 7.0,用于小列表的高效空间编码。quicklist
,编码为 ziplist 或 listpack 的链表。
-
集合可以编码为
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
,编码为 listpack 的基数树。
一旦执行的操作导致 Redis 无法保留节省空间的编码,所有特殊编码类型都会自动转换为通用类型。
RESP2 回复
以下之一
- Nil 回复:如果键不存在。
- Bulk string 回复:对象的编码。
RESP3 回复
以下之一
- Null 回复:如果键不存在。
- Bulk string 回复:对象的编码。