- 对象类型:字符串对象、列表对象、哈希对象、集合对象和有序集合对象
- 使用对象的好处:可以针对不同的使用场景,为对象设置多种不同的数据结构实现,从而优化对象在不同场景下的使用效率
- 内存回收:基于引用计数
- 对象共享:包含对整数值的字符串对象进行共享(基于引用计数)
结构体:
redisObject {
type //类型
encoding // 编码
ptr //指向底层数据结构
refcount // 引用计数,为0时释放内存
lru // 记录了最后一次对象被命令程序访问的时间,用于当内存达到上限时释放空转时长(当前时间-lru)较高的对象
}
- redis对象编码特点:和数据长度密切相关,需要时查阅即可 各种对象类型:
- 字符串对象:编码可以是int、raw或者embstr
- 列表对象:编码可以时ziplist或者linkedlist
- 哈希对象:编码可以是ziplist或者hashtable
- 集合对象:编码可以是intset或者hashtable
- 有序集合对象:编码可以是ziplist或者skiplist