0
点赞
收藏
分享

微信扫一扫

四、redis原理之set底层数据结构

您好 2022-03-12 阅读 75

一、redis原理之set底层数据结构?

其底层有两种实现方式:

1.当value是整数值时,且数据量不大时使用inset来存储,

2.其他情况都是用字典dict来存储

inset的结构:

typedf struct inset{
    uint32_t encoding;//编码方式 有三种 默认 INSET_ENC_INT16
    uint32_t length;//集合元素个数
    int8_t contents[];//实际存储元素的数组 
                      //元素类型并不一定是ini8_t类型,柔性数组不占intset结构体大小,并且数组中的元
                      //素从小到大排列
}inset;

编码格式encoding:共有三种,INTSET_ENC_INT16、INSET_ENC_INT32和INSET_ENC_INT64三种,分别对应不同的范围。Redis为了尽可能地节省内存,会根据插入数据的大小选择不一样的类型来进行存储。

元素数量length:记录了保存数据的数组contents中共有多少个元素,这样获取个数的时间复杂度就是O(1)。

数组contents:真正存储数据的地方,数组是按照从小到大有序排列的,并且不包含任何重复项。

举报

相关推荐

0 条评论