OBJECT ENCODING

返回Redis对象的内部编码。

语法

OBJECT ENCODING key

引入版本:2.2.3

复杂度摘要:O(1)

返回存储在 key 的 Redis 对象的内部编码。

必需参数

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 或 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,编码为列表包的基数树。

一旦执行导致Redis无法保留节省空间的编码的操作,所有特殊编码类型都会自动转换为通用类型。

Redis Software 与 Redis Cloud 兼容性

Redis
软件
Redis
Cloud
说明
✅ 标准
❌主动-主动
✅ 标准
❌主动-主动
对于主动-主动数据库,请改用 CRDT.DEBUG ENCODING。

返回值

RESP2

以下之一: * 无回复:如果键不存在。 * 批量字符串回复:对象的编码。

RESP3

以下之一: * 空回复:如果键不存在。 * 批量字符串回复:对象的编码。

资料来源:Redis 官方 OBJECT ENCODING 文档;中文内容参考 Redis 文档许可。