Reids之整数集合
来源:互联网 发布:如何评价海贼王 知乎 编辑:程序博客网 时间:2024/06/06 12:50
整数集合介绍
整数集合(intset)是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素不多时,Redis就会使用整数集合作为集合键的底层实现。
整数集合的实现
保存整数值得集合抽象数据集合,保证集合中不会出现重复元素。
typedef struct intset{ //编码方式 uint32_t encoding; //集合包含的元素数量 uint32_t length; //保存元素的数组 int8_t contents[];}intset;
contents内部元素是有序的排列,并不重复。
encoding属性值如果是INTSET_ENC_INT64,则表示整数集合的底层实现为int64_t类型的数组。
如果保存4个元素,contents数组大小为sizeof(int64_t)*4=64*4=256位
升级
当将一个元素添加到整数集合里,新元素类型比集合任一元素类型都要长,则要进行升级。
升级集合并添加新元素:
1.根据新元素类型,扩展数组空间大小,并为新元素分配空间
2.将底层数组所有类型转化成新元素相同的类型。将类型转化后元素放到正确位置上。
3.将新元素添加到底层数组里面
升级提高了灵活性,节约内存
降级
整数集合不支持降级操作,只保存升级后的状态,即最大类型状态。
0 0
- Reids之整数集合
- 【Redis源码剖析】 - Reids内置数据结构之整数集合intset
- redis数据结构之整数集合
- redis之六整数集合
- CentOS7之Reids安装配置
- redis源码学习之整数集合
- python操作redis之连接reids
- Python操作Reids之任务队列
- 整数集合
- Redis内部数据结构详解之整数集合(intset)
- redis之整数集合的实现源码分析
- NoSql之Redis整数集合(intset)源码探究
- 1768 整数集合分解
- 整数集合分解
- 整数集合的实现
- Redis中的整数集合
- 集合的整数表示
- redis 整数集合
- 中国新四大发明诞生 主打吃逛买以互联网为主
- Mac版本idea15如何更改编辑器的背景颜色为黑色
- POJ 3525 Most Distant Point from the Sea (二分答案+半平面交)
- Python Numpy Tutorials: 数据类型
- Codeforces Round #401 (Div. 2) E 离散化 + 树状数组/线段树
- Reids之整数集合
- Android http访问简单封装
- LCD 亮起来
- ubuntu 16.04 OpenCV3.2.0完全编译安装
- QuantLib教程(三)BS模型、二叉树模型与欧式期权定价
- Linux应用程序之socket网络编程(非常详细)
- TCP/IP协议三次握手与四次握手流程解析
- QLPreviewController 自定义导航,完全自定义
- 循环冗余检验CRC原理