整数集合

简介: 整数集合整数集合的升级升级整数集合并添加新元素的步骤:1、根据新元素的类型, 扩展整数集合底层数组的空间大小, 并为新元素分配空间。2、将底层数组现有的所有元素都转换成与新元素相同的类型, 并将类型转换后的元素放置到正确的位上, 而且在放置元素的过程中, 需要继续维持底层数组的有序性质不变。

整数集合

整数集合的升级

升级整数集合并添加新元素的步骤:

  • 1、根据新元素的类型, 扩展整数集合底层数组的空间大小, 并为新元素分配空间。
  • 2、将底层数组现有的所有元素都转换成与新元素相同的类型, 并将类型转换后的元素放置到正确的位上, 而且在放置元素的过程中, 需要继续维持底层数组的有序性质不变。
  • 3、将新元素添加到底层数组里面。
  • 4、改变程序将整数集合 encoding 属性的值。

升级之后新元素的摆放位置

因为引发升级的新元素的长度总是比整数集合现有所有元素的长度都大, 所以这个新元素的值要么就大于所有现有元素, 要么就小于所有现有元素:

  • 在新元素小于所有现有元素的情况下, 新元素会被放置在底层数组的最开头(索引 0 );
  • 在新元素大于所有现有元素的情况下, 新元素会被放置在底层数组的最末尾(索引 length-1 )。

整数集合的降级

整数集合不支持降级操作, 一旦对数组进行了升级, 编码就会一直保持升级后的状态。

对象

查看对象类型type

type test

类型常量 对象的名称 TYPE 命令的输出
REDIS_STRING 字符串对象 string
REDIS_LIST 列表对象 list
REDIS_HASH 哈希对象 hash
REDIS_SET 集合对象 set
REDIS_ZSET 有序集合对象 zset

查看数据库值对象OBJECT ENCODING key

object encloding test

对象所使用的底层数据结构 编码常量 OBJECT ENCODING 命令输出
整数 REDIS_ENCODING_INT "int"
embstr 编码的简单动态字符串(SDS)REDIS_ENCODING_EMBSTR "embstr"
简单动态字符串 REDIS_ENCODING_RAW "raw"
字典 REDIS_ENCODING_HT "hashtable"
双端链表 REDIS_ENCODING_LINKEDLIST "linkedlist"
压缩列表 REDIS_ENCODING_ZIPLIST "ziplist"
整数集合 REDIS_ENCODING_INTSET "intset"
跳跃表和字典 REDIS_ENCODING_SKIPLIST "skiplist"

字符串对象

embstr 编码的字符串对象在执行命令时, 产生的效果和 raw 编码的字符串对象执行命令时产生的效果是相同的, 但使用 embstr 编码的字符串对象来保存短字符串值有以下好处:

  • embstr 编码将创建字符串对象所需的内存分配次数从 raw 编码的两次降低为一次。
  • 释放 embstr 编码的字符串对象只需要调用一次内存释放函数, 而释放 raw 编码的字符串对象需要调用两次内存释放函数。
  • 因为 embstr 编码的字符串对象的所有数据都保存在一块连续的内存里面, 所以这种编码的字符串对象比起 raw 编码的字符串对象能够更好地利用缓存带来的优势。

embstr 编码的字符串对象实际上是只读的: 当我们对 embstr 编码的字符串对象执行任何修改命令时, 程序会先将对象的编码从 embstr 转换成 raw , 然后再执行修改命令; 因为这个原因, embstr 编码的字符串对象在执行修改命令之后, 总会变成一个 raw 编码的字符串对象。

相关文章
|
存储 分布式计算 区块链
朋友圈技术范儿装X指南-有向无环图
朋友圈技术范儿装X指南-有向无环图
|
10月前
|
Web App开发 监控 前端开发
RUM实践-累计布局偏移(CLS)的探索
本文介绍网页性能关键指标——累计布局偏移(CLS),解析其对用户体验与SEO的影响,并分享如何通过DATABUFF的RUM工具监控CLS数据,结合图像尺寸预留、字体优化、资源预加载等策略,有效提升页面视觉稳定性与访问体验。
|
索引 Python
Python考试基础知识
Python考试基础知识
LeetCode 1318. 或运算的最小翻转次数
LeetCode 1318. 或运算的最小翻转次数
|
算法 Java Go
运筹优化学习21:Java调用Cplex实现求解Cuting Stock Porblem的列生成算法详解(上)
运筹优化学习21:Java调用Cplex实现求解Cuting Stock Porblem的列生成算法详解
运筹优化学习21:Java调用Cplex实现求解Cuting Stock Porblem的列生成算法详解(上)
|
存储 Java
笔记 - Java 进制和位运算
二进制:只有0和1组成的一组数成为二进制数,计算机中的数据都是以二进制形式进行存储的。     通常一个二进制数最高位是1,那么对应的十进制数为负数,如果最高位是0,那么对应的数是正数      八进制:一个二进制数表示成八进制数,将该二进制数从右到左每三位一组,每一组算出对应的十进制数,     每组对应的十进制数连起来就是八进制表现形式。八进制表现形式最高是7      十
1483 0
|
8天前
|
云安全 人工智能 运维
阿里云联动百位企业安全专家,共识Agent防御最佳实践
当Agent成为新员工,你的安全边界在哪里?
1929 6
阿里云联动百位企业安全专家,共识Agent防御最佳实践
|
2天前
|
编解码 人工智能 安全
2核4G/4核8G/8核16G阿里云服务器如何选择实例?经济型e、通用算力型u2i与计算型c9i选哪个?
本文介绍了阿里云2核4G、4核8G、8核16G三档主流配置下经济型e、通用算力型u2i和计算型c9i三种实例的最新活动价格与适用场景。同配置下三者价差显著,以2核4G为例,经济型e低至599.93元/年,计算型c9i则高达1742.08元/年。文章详细解析了各实例的性能定位:经济型e适合轻负载入门场景,u2i兼顾稳定算力与性价比,c9i凭借第9代至强处理器与芯片级安全能力支撑高性能业务。同时提示用户可叠加满减优惠券享受折上折,建议根据业务负载与预算综合决策。
498 111