zoukankan      html  css  js  c++  java
  • Redis--整数集合(升降级)

    整数集合(intset)是 Redis 用于保存整数值的集合抽象数据结构, 它可以保存类型为 int16_t 、 int32_t 或者 int64_t 的整数值, 并且保证集合中不会出现重复元素。

    每个 intset.h/intset 结构表示一个整数集合:

    typedef struct intset {
    
        // 编码方式
        uint32_t encoding;
    
        // 集合包含的元素数量
        uint32_t length;
    
        // 保存元素的数组
        int8_t contents[];
    
    } intset;

    整数集合的底层实现为数组, 这个数组以有序、无重复的方式保存集合元素, 在有需要时, 程序会根据新添加元素的类型, 改变这个数组的类型。

    升级操作为整数集合带来了操作上的灵活性, 并且尽可能地节约了内存。

    整数集合只支持升级操作, 不支持降级操作

    升级整数集合并添加新元素共分为三步进行:

    1. 根据新元素的类型, 扩展整数集合底层数组的空间大小, 并为新元素分配空间。
    2. 将底层数组现有的所有元素都转换成与新元素相同的类型, 并将类型转换后的元素放置到正确的位上, 而且在放置元素的过程中, 需要继续维持底层数组的有序性质不变。
    3. 将新元素添加到底层数组里面。

    整数集合不支持降级操作, 一旦对数组进行了升级, 编码就会一直保持升级后的状态。

  • 相关阅读:
    函数的有用信息,装饰器 day12
    函数名、闭包、装饰器 day11
    函数的动态参数与命名空间 day10
    函数 day9
    集合 day8
    文件操作 day8
    基础数据类型补充,及capy daty7
    day7 回顾
    编码补充 daty 6
    字典的增删改查 daty 5
  • 原文地址:https://www.cnblogs.com/sulishihupan/p/14522530.html
Copyright © 2011-2022 走看看