redis3.0.7源码阅读(六)redis整数集合


版本:3.0.7


1.源文件
intset.h
intset.c

2.整数集合数据结构
typedef struct intset {
    // 编码方式
    uint32_t encoding;

    // 集合包含的元素数量
    uint32_t length;

    // 保存元素的数组
    int8_t contents[];
} intset;

/*
 * intset 的编码方式
 */
/* Note that these encodings are ordered, so:
 * INTSET_ENC_INT16 < INTSET_ENC_INT32 < INTSET_ENC_INT64. */
#define INTSET_ENC_INT16 (sizeof(int16_t))
#define INTSET_ENC_INT32 (sizeof(int32_t))
#define INTSET_ENC_INT64 (sizeof(int64_t))

3.空间分布


4.一些特性
4.1 当使用redis集合键,且数值都是整数时,那么集合键的底层实现就是整数集合
4.2 整数集合支持三种数据编码,分别是16位、32位、64位数值
4.3 整数集合会自动发生升级,也就是当前编码不足以装下新插入的数据时,就会把整个集合升级,但是不会发生降级
4.4 整数集合比字符串集合在某种情况下更加节省内存,比如说数值比较大的情况下


End;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值