Redis(开发与运维):11---Redis数据结构与内部编码

一、五大数据结构

  • Redis可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为:
    • STRING:字符串
    • LIST:列表
    • SET:集合
    • HASH:散列
    • ZET:有序集合

Redis(开发与运维):11---Redis数据结构与内部编码

Redis(开发与运维):11---Redis数据结构与内部编码

TYPE命令

  • 用来获得键的数据类型,而不是键值的数据类型
  • 返回值:
    • string:字符串类型
    • hash:散列类型
    • list:列表类型
    • set:集合类型
    • zet:有序集合类型

Redis(开发与运维):11---Redis数据结构与内部编码

 

二、内部编码

  • 实际上每种数据结构都有自己底层的内部编码实现,而且是多种实现, 这样Redis会在合适的场景选择合适的内部编码,如下图所示

Redis(开发与运维):11---Redis数据结构与内部编码

  • Redis这样设计有两个好处:
    • 第一,可以改进内部编码,而对外的数据结构和命令没有影响,这样一旦开发出更优秀的内部编码,无需改动外部数 据结构和命令,例如Redis3.2提供了quicklist,结合了ziplist和linkedlist两者的优势,为列表类型提供了一种更为优秀的内部编码实现,而对外部用户来 说基本感知不到
    • 第二,多种内部编码实现可以在不同场景下发挥各自的优势,例如ziplist比较节省内存,但是在列表元素比较多的情况下,性能会有 所下降,这时候Redis会根据配置选项将列表类型的内部实现转换为 linkedlist

OBJECT ENCODING命令

  • 该命令用来返回数据结构的内部编码

Redis(开发与运维):11---Redis数据结构与内部编码