二十五、Redis 升级的好处
整数集合的升级策略有两个好处, 一个是提升整数集合的灵活性, 另一个是尽可能地节约内存。 提升灵活性 因为 C 语言是静态类型语言, 为了避免类型错误, 我们通常不会将两种不同类型的值放在同一个数据结构里面。 比如说, 我们一般只使用 in...
整数集合的升级策略有两个好处, 一个是提升整数集合的灵活性, 另一个是尽可能地节约内存。 提升灵活性 因为 C 语言是静态类型语言, 为了避免类型错误, 我们通常不会将两种不同类型的值放在同一个数据结构里面。 比如说, 我们一般只使用 in...
每当我们要将一个新元素添加到整数集合里面, 并且新元素的类型比整数集合现有所有元素的类型都要长时, 整数集合需要先进行升级(upgrade), 然后才能将新元素添加到整数集合里面。 升级整数集合并添加新元素共分为三步进行: 1、 根据新元素...
获取 IDEA 激活码、PyCharm 激活码、WebStorm 激活码和 DataGrip 激活码,提供详细破解教程与永久激活方法。支持 IDEA 永久激活与破解,免费获取注册码与激活码,解决 2024/2025 版本激活问题,轻松实现所有 JetBrains 工具的激活。
整数集合(intset)是 Redis 用于保存整数值的集合抽象数据结构, 它可以保存类型为 int16_t 、 int32_t 或者 int64_t 的整数值, 并且保证集合中不会出现重复元素。 每个 intset.h/intset 结构...
跳跃表是有序集合的底层实现之一, 除此之外它在 Redis 中没有其他应用。 Redis 的跳跃表实现由 zskiplist 和 zskiplistNode 两个结构组成, 其中 zskiplist 用于保存跳跃表信息(比如表头节点、表尾节...
表 5-1 列出了跳跃表的所有操作 API 。 表 5-1 跳跃表 API 函数 作用 时间复杂度 zslCreate 创建一个新的跳跃表。 zslFree 释放给定跳跃表,以及表中包含的所有节点。 , N ...
Redis 的跳跃表由 redis.h/zskiplistNode 和 redis.h/zskiplist 两个结构定义, 其中 zskiplistNode 结构用于表示跳跃表节点, 而 zskiplist结构则用于保存跳跃表节点的相关信息...
字典被广泛用于实现 Redis 的各种功能, 其中包括数据库和哈希键。 Redis 中的字典使用哈希表作为底层实现, 每个字典带有两个哈希表, 一个用于平时使用, 另一个仅在进行 rehash 时使用。 当字典被用作数据库的底层实现, 或者...
表 4-1 列出了字典的主要操作 API 。 表 4-1 字典的主要操作 API 函数 作用 时间复杂度 dictCreate 创建一个新的字典。 dictAdd 将给定的键值对添加到字典里面。 dictReplace 将给定的键值对添加到...
上一节说过, 扩展或收缩哈希表需要将 ht[0] 里面的所有键值对 rehash 到 ht[1] 里面, 但是, 这个 rehash 动作并不是一次性、集中式地完成的, 而是分多次、渐进式地完成的。 这样做的原因在于, 如果 ht[0] 里...
随着操作的不断执行, 哈希表保存的键值对会逐渐地增多或者减少, 为了让哈希表的负载因子(load factor)维持在一个合理的范围之内, 当哈希表保存的键值对数量太多或者太少时, 程序需要对哈希表的大小进行相应的扩展或者收缩。 扩展和收缩...