Redis 学习笔记_对象(3)

对象

​ redis没有使用sds,链表,字典,跳跃表,整数集合,压缩列表这些数据结构直接实现键值对数据库,而且构建了5种对象(字符串对象,列表对象,哈希对象,集合对象,有序集合对象),每种对象至少包含一种数据结构。

​ 好处是在不同场景使用不同的数据结构,提高效率。

对象的类型和编码

类型 对象 编码 OBJECT ENCODING输出
REDIS_STRING REDIS_ENCODING_INT 使用整数值实现的字符串对象 int
REDIS_STRING REDIS_ENCODING_EMBSTR 使用embstr编码的简单动态字符串实现的字符串对象 embstr
REDIS_STRING REDIS_ENCODING_RAW 使用简单动态字符串实现的字符串对象 raw
REDIS_LIST REDIS_ENCODING_ZIPLIST 使用压缩列表实现的列表对象 ziplist
REDIS_LIST REDIS_ENCODING_LINKEDLIST 使用双端链表实现的列表对象 linkedlist
REDIS_HASH REDISl_ENCODING_ZIPLIST 使用压缩列表实现的哈希对象 ziplist
REDIS_HASH REDIS_ENCODING_HT 使用字典实现的哈希对象 hashtable
REDIS_SET REDIS_ENCODING_INTSET 使用整数集合实现的集合对象 intset
REDIS_SET REDIS_ENCODING_HT 使用字典实现的集合对象 hashtable
REDIS_ZSET REDISl_ENCODING_ZIPLIST 使用压缩列表实现的有序集合对象 ziplist
REDIS_ZSET REDISl_ENCODING_SKIPLIST 使用跳跃表和字典实现的有序集合对象 skiplist

字符串对象(REDIS_STRING)

对象 编码 备注
REDIS_ENCODING_INT 使用整数值实现的字符串对象 当保存对象是整数值并且可以使用long类型表示,对应编码为int
REDIS_ENCODING_EMBSTR 使用embstr编码的简单动态字符串实现的字符串对象 保存对象是字符串时,且字符串长度小于等于32字节
REDIS_ENCODING_RAW 使用简单动态字符串实现的字符串对象 保存对象是字符串时,且字符串长度大于32字节

字符串命令:
Redis 学习笔记_对象(3)