Redis的五大数据类型的底层实现

参考:《Redis设计与实现》黄健宏著,网上对Redis的详解等

1、简介

Redis的五大数据类型也称五大数据对象;前面介绍过6大数据结构,Redis并没有直接使用这些结构来实现键值对数据库,而是使用这些结构构建了一个对象系统redisObject;这个对象系统包含了五大数据对象,字符串对象(string)、列表对象(list)、哈希对象(hash)、集合(set)对象和有序集合对象(zset);而这五大对象的底层数据编码可以用命令OBJECT ENCODING来进行查看。

redisObject结构

1 typedef struct redisObject {
2     // 类型
3     unsigned type:4;
4     // 编码
5     unsigned encoding:4;
6     // 指向底层实现数据结构的指针
7     void *ptr;
8     // ...
9 } robj;

redis是以键值对存储数据的,所以对象又分为键对象和值对象,即存储一个key-value键值对会创建两个对象,键对象和值对象。

键对象总是一个字符串对象,而值对象可以是五大对象中的任意一种。

  • type属性存储的是对象的类型,也就是我们说的 string、list、hash、set、zset中的一种,可以使用命令 TYPE key 来查看。
  • encoding属性记录了队形所使用的编码,即这个对象底层使用哪种数据结构实现。


版权声明:本文为JineD原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。