当前位置: 首页 > news >正文

那些网站可做国外零售营销推广外包公司

那些网站可做国外零售,营销推广外包公司,文件网站建设,网页传奇游戏中心Redis系列之底层数据结构整数集IntSet 什么是IntSet IntSet,整数集合,是Redis集合类型的一种底层数据结构,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,redis就会选用intset作为底层实现。 IntSet的数…

Redis系列之底层数据结构整数集IntSet

什么是IntSet

IntSet,整数集合,是Redis集合类型的一种底层数据结构,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,redis就会选用intset作为底层实现。

IntSet的数据结构

查看redis6.0源码,https://github.com/redis/redis/blob/6.0/src/intset.h,inset的数据结构如图:

typedef struct intset {uint32_t encoding;uint32_t length;int8_t contents[];
} intset;
  • encoding:表示编码方式,取值有:INTSET_ENC_INT16,INTSET_ENC_INT32,INTSET_ENC_INT64
  • length:代表存储的整数的个数
  • contents:实际存储数值的连续内存区域,本质是一个数组。各个项在数组中按值的大小从小到大有序排序,且数值中不包含重复项。总而言之,就是一个有序不重复的数组。

intset数据结构图:
在这里插入图片描述

set集合什么时候使用inset存储?

Redis中使用intset或者hashtable存储set。什么情况使用intset存储?

当集合对象可以同时满足以下两个条件时,使用intset:

  1. 集合对象保存的所有元素都是整数值,如果不是整数值使用dictht hash表(数组+链表)
  2. 集合对象保存的元素数量不超过512个,如果超过512个元素,使用hashtable

跟一个Redis配置有关系:

 set-max-intset-entries 512

intset数据结构和dictht hash对比,这个dictht hash就是Redis中另外一种重要的数据结构dict
在这里插入图片描述

拓展知识点

整数集合的升级过程
例如在一个int16类型的整数集合中插入一个int32类型的值,整个集合的所有元素都会转换成32类型。整个过程有3步:

  • 根据新元素的类型,扩展整数集合底层数组的空间大小,并为新元素的分配空间。
  • 将底层数组现有的所有元素都转换成与新元素相同的类型,并将类型转换后的元素放置到正确的位上,放置过程需要维持有序性。
  • 最后改变encoding的值,length+1。
    ps:那么如果删除刚加入的int32类型时,会不会做一个降级操作呢?不会。主要还是减少开销的权衡。
http://www.hkea.cn/news/396620/

相关文章:

  • 下载网站怎么下载广州网站定制多少钱
  • 西安攻略旅游自由行怎么玩北京seo软件
  • 汉川网站建设sem代运营
  • 装酷网装修平台东莞seo外包
  • 专门做图片的网站吗如何建网站要什么条件
  • 卢氏县住房和城乡建设局网站站长统计 站长统计
  • 济南 网站制作旺道营销软件
  • 新上线网站如何做搜索引擎站长素材网站
  • 做网站编辑深圳疫情防控最新消息
  • PHP网站开发项目式教程google下载手机版
  • 国外专门用于做网站图片的做网站要多少钱
  • 网站维护费用计入什么科目媒介星软文平台官网
  • 网站建设seo 视频做网站哪个平台好
  • 旅行社网站建设方案论文百度seo公司
  • 长沙网站建设与维护百度开户联系方式
  • 做pcr查基因序列的网站南京百度网站快速优化
  • 数据服务网站策划方案关键词快速优化排名软件
  • 响应式网站缺点学大教育培训机构电话
  • 江苏天德建设工程有限公司网站一个平台怎么推广
  • 石家庄做网络推广的网站推广平台收费标准
  • 贵阳天柱网站建设招聘域名注册平台有哪些
  • 网站建设电话营销百度问一问官网
  • 网站优化建设河南怎么关闭seo综合查询
  • 自贡做响应式网站开发公司google搜索引擎入口google
  • 东莞哪种网站推广好微信朋友圈推广文案
  • 现在学做网站赚钱吗东莞市优速网络科技有限公司
  • 宁津做网站公司宣传推广图片
  • 陕西的建设厅官方网站数据分析报告
  • 企业网站建设的定位互联网
  • 注册域名之后如何做网站优化清理大师