暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

非关系型数据库Redis之整数集合

数据仓库 2020-07-02
253

点击蓝字关注我吧


【本文详细介绍了非关系型数据库Redis中整数集合的基本概念和常用API,欢迎读者朋友们阅读、转发和收藏!】

Redis 常用数据类型

Redis 最为常用的数据类型主要有以下:String 、 Hash 、 List 、 Set 、 Sorted set 。

整数集合

整数集合 intset 用于有序、无重复地保存多个整数值,根据集合中元素的值自动选择使用整数类型来保存元素,例如:如果 intset 中绝对值最大的整数可以用 int32_t 来保存,那么整个 intset 中所有元素都使用 int32_t 来保存。

如果当前 intset 所使用的类型不能保存一个即将加入到该 intset 的新元素时候,需要对 intset 进行升级,比如新元素的类型是 int64_t ,而当前 intset 的类型是 int32_t ,那么升级就是先将 intset 中所有元素由 int32_t 转换为 int64_t ,然后再插入新元素。intset 用于有序、无重复地保存多个整数值,它会根据元素的值,自动选择该用什么长度的整数类型来保存元素;

当添加新元素时,需要判断当前 intset 的编码类型能否保存新元素,如果不行需要对 intset 进行升级,升级后的 intset 中的元素会扩大其占有的字节数,但是值不发生改变;intset 只支持升级,不支持降级,因此相对而言会浪费内存;intset 中元素是有序排列的,因此使用折半查找的时间复杂度为 O(logN) 。

整数集合使用如下 api :

  • _intsetValueEncoding:获取给定整数的编码类型

  • _intsetGet:根据索引获取整数值

  • _intsetSet:根据索引设置给定整数值

  • intsetNew:新建 intset

  • intsetResize:为给定的 intset 重新分配内存

  • intsetSearch:查找给定的整数是否在 intset 中

  • intsetUpgradeAndAdd:先升级 intset 然后插入元素

  • intsetAdd:直接添加元素

  • intsetMoveTail:将 intset 中元素偏移

  • intsetRemove:删除元素

  • intsetRandom:随机返回一个 intset 中元素

  • intsetLen:intset 中元素的个数

  • intsetBlobLen:intset 所占的字节数

我知道你在看

文章转载自数据仓库,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论