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属性记录了队形所使用的编码,即这个对象底层使用哪种数据结构实现。