前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis源码分析(四)——Redis数据结构-整数集合

Redis源码分析(四)——Redis数据结构-整数集合

作者头像
大闲人柴毛毛
发布2018-03-09 17:52:54
8060
发布2018-03-09 17:52:54
举报
文章被收录于专栏:大闲人柴毛毛大闲人柴毛毛

1. 整数集合特点

  1. 有序:集合中所有值按照从小到大顺序排列。
  2. 不重复
  3. 可以存储int16_t、int32_t、int64_t三种类型的整数

1. 数据结构

代码语言:javascript
复制
typedef struct intset{
  unit32_t encoding;
  unit32_t length;
  int8_t contents[];
} intset;
  • encoding:content数组中存储的整数类型(int16_t、int32_t、int64_t三者之一)
  • length:contents数组中元素的个数
  • contents:整数数组

2. 升级

整数集合中可以存储int16_t、int32_t、int64_t这三种类型的整数,但在任一时刻,集合中所有元素的类型都是统一的。 如果当前集合存储的元素是int16_t类型,当需要存入一个int32_t类型的整数时,Redis会分配一片新的内存空间,将每个元素的类型提升为int32_t,再将所有元素迁移至新数组中。 这就是升级的过程。

3. 降级

一旦升级了之后,即使最大的那个元素已经删除,集合元素也是不会降级的。

4. 整数集合优点

4.1 灵活

整数集合可以通过自动升级底层数组来适应新元素,所以我们可以随意地将int16_t、int32_t、int64_t类型的整数添加到集合中,而不必担心类型错误。

4.2 节约内存

如果要用一个数组同时能够保存int16_t、int32_t、int64_t这三种类型的整数,那么只能创建一个int64_t类型的数组,而Redis整数集合可以保存三种类型的整数,只有当有需要的时候才进行升级操作,因此节约了内存。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年10月14日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 整数集合特点
  • 1. 数据结构
  • 2. 升级
  • 3. 降级
  • 4. 整数集合优点
    • 4.1 灵活
      • 4.2 节约内存
      相关产品与服务
      云数据库 Redis
      腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档