[Redis]Intset

news/2024/10/5 7:16:25

intset 小整数集合

set 集合容纳的元素都是整数并且元素个数较少时, Redis 会使用 intset 来存储集合元素。
intset 是紧凑的数组结构,同时支持 16 位、 32 位和 64 位整数

struct intset<T>
{int32 encoding;//决定整数位宽是 16 位、 32 位还是 64int32 length ;//元素个数int<T> contents;//整数数组,可以是 16 位、 32 位和 64
}

5-8 所示是 intset 的内部结构示意图。老钱也不理解为什么 intset encoding字段和 length 字段使用 32 位整数存储,毕竟它们只是用来存储小整数的,长度不应该很长,而且 encoding 只有 16 位、 32 位和 64 位三个类型,用一个字节存储就绰绰有余。关于这点,读者们可以进一步讨论。

image

> sadd codehole 1 2 3
(integer) 3
> debug object codehole
Value at : Ox7fec2dc2bde0 refcount:l encoding:intset serializedlength:15 lru:6065795 lru_seconds_idle:4
> sadd codehole go java python
(integer) 3
> debug object codehole
Value at:Ox7fec2dc2bde0 refcount:1 encoding:hashtable serializedlength:22 lru:6065810 lru_seconds_idle:5

注意观察 debug object 的输出字段 encoding 的值,可以发现当 set 里面放进去了非整数值时,存储形式立即从 intset 转变成了 hash 结构。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/54849.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Github祝你有美好的一天:Have an Octotastic day!

Thanks for submitting! Be sure to check your email. If you dont hear from us within the hour, you should receive an email from us in less than 8 days. Have an Octotastic day! 它来自 Github 服务。Github 的标志是一个 Octocat(如图所示),这句话可能类似于“祝…

第3天---RSA基础题型(二)

前言: 量是一定要积累的,但是不要一味的追求量,导致学完后面的知识,忘了前面的知识,得不偿失,那我们当然要避免这种情况,那就先花点时间复习昨天的内容。 ........ ........ 过了10min T9.添加小因子(e与phi不互素) 一.题目: from Crypto.Util.number import *flag =…

python文件打开方式详解——a、a+、r+、w+、rb、rt区别

在做深度学习大作业的时候看到了这个代码:一开始以为“rb”是相对路径的意思,搜了一下结果不是。 1.排除文件打开方式错误: r只读,r+读写,不创建,即需要事先存在一个文件以供读/读写,若不存在文件会报错 w新建只写,w+新建读写,二者都会将文件内容清零,即事先不需要有…

创业团队适合的10款科研项目经费管理系统

国内外主流的 10 款科研项目经费管理系统对比:PingCode、Worktile、Colloa科研项目管理平台、云科研管理系统、智方科研管理系统、NIH Grants、NSF – National Science Foundation、IDRC、Bill & Melinda Gates Foundation、Canadian Institutes of Health Research。在管…

最常用集合 - arraylist详解

ArrayList介绍 ArrayList实现了List接口,是顺序容器,即元素存放的数据与放进去的顺序相同,允许放入null元素,底层通过数组实现。除该类未实现同步外,其余跟Vector大致相同。每个ArrayList都有一个容量(capacity),表示底层数组的实际大小,容器内存储元素的个数不能多于当…

10款项目型企业管理系统,选择前需了解

国内外主流的 10 款企业项目管理系统对比:PingCode、Worktile、泛微 e-office、金蝶云星瀚、用友项目管理软件、Jira、Monday.com、Asana、Trello、Basecamp。在面对复杂的项目管理需求时,许多企业经常感到手头的工具不足以支撑高效的运作。有效的项目型企业管理系统不仅可以…

[js] 页面可见性API 监测用户切屏

Page Visibility API 可帮助检测用户切换页面,适用于考试或网课系统。本文介绍了 visibilitychange 事件和 document.visibilityState 的状态,并提供了基本的防作弊实现方法,如定期检查页面可见性和监听视频播放状态。Page Visibility API 在做考试系统或者网课系统的时候,…

[Paper Reading] ControlNet: Adding Conditional Control to Text-to-Image Diffusion Models

ControlNet: Adding Conditional Control to Text-to-Image Diffusion Models link 时间:23.11 机构:Standford TL;DR 提出ControlNet算法模型,用来给一个预训练好的text2image的diffusion model增加空间条件控制信息。作者尝试使用5w-1M的edges/depth/segmentation/pose等信…