Redis单个数据对象如下:
redisObj {
type // 类型
encoding // 编码
ptr // 内容指针
}
Redis的5种数据类型:
一、字符串String类型
Int类型编码
embstr类型编码:不可变字符串, 只分配一次内存(redisObject与sdshdr连续内存)
raw类型编码:可变字符串, 分配两次内存(redisObject与sdshdr)
二、列表List类型
ziplist类型编码:连续数组存储,节省内存
linkedlist类型编码:双向链表存储,针对大量数据操作灵活
三、哈希Hash类型
ziplist类型编码:连续数组存储,节省内存
hashtable类型编码:针对大量数据可快速查找元素
四、集合Set类型
intset类型编码:连续数组存储,节省内存
hashtable类型编码:针对大量数据,查找单个元素可快速查找元素
五、有序集合zset类型
ziplist类型编码:连续数组存储,节省内存
skiplist类型编码:底层采用skiplist与dict(hashtable)类型两个变量存储。skiplist有序存储,范围range查询速度快,dict单个查询速度快(O(1))