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 回复:对象的编码。