对象编码
语法
OBJECT ENCODING key
- 从以下位置开始可用:
- 2.2.3
- 时间复杂度:
- O(1)
- ACL 类别:
-
@keyspace
,@read
,@slow
,
返回存储在<key>
Redis 对象可以用不同的方式进行编码:
-
字符串可以编码为:
raw
、普通字符串编码。int
,表示 64 位有符号间隔中的整数的字符串,以这种方式编码以节省空间。embstr
、嵌入字符串,它是一个对象,其中内部简单动态字符串sds
,是与对象本身相同的卡盘中分配的不可修改的字符串。embstr
可以是长度不超过硬编码限制OBJ_ENCODING_EMBSTR_SIZE_LIMIT
或 44 字节。
-
列表可以编码为:
linkedlist
、简单列表编码。不再使用,旧的列表编码。ziplist
,Redis <= 6.2,一种用于小列表的节省空间的编码。listpack
,Redis >= 7.0,一种用于小列表的节省空间的编码。quicklist
,编码为 ziplist 或 listpacks 的 linkedlist。
-
集合可以编码为:
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 reply:对象的编码。
RESP3 回复
以下选项之一:
- Null 回复:如果 key 不存在。
- Bulk string reply:对象的编码。