Redis高级数据结构之Bitmaps

这篇具有很好参考价值的文章主要介绍了Redis高级数据结构之Bitmaps。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Bitmaps的介绍

  • 现代计算机使用二进制位作为信息存储的基本单元。一个字节(Byte)等于8个二进制位(bit)。合理的使用位能有效提高内存使用率和开发效率。
  • 位是最小信息单位,可以表示两个状态之一。
  • 字节是更大的单位,用多个位组成,在计算机中数据以字节为单位进行存储和访问。
  • Redis提供了Bitmaps这种,虽然本质上也是字符串,但是他却可以对字符串进行位的操作。
  • Bitmaps单独提供了一套命令,有区别于使用字符串String的命令。
  • 可以把Bitmaps想象成一个以位为单位的数组,数组的每个单元只能存储0和1,数组的下标在Bitmaps中叫做偏移量。

关于Bitmaps在Redis中的操作指令

  • setbit设置值
  • setbit key offset value(设置键的第offset个位的值,从0开始计算)
  • 不同学号的用户分别进行了一次的访问、后面2019102857写的意思是从第0位开始算起第2019102857个位。显然这样子的设置并不是很合理。学号是由相同的数组开头的,这里是201910。要是直接将上述学号直接操作Bitmaps的位偏移量,势必会造成内存的浪费,我们可以使用学号减去201910,后续的数组作为偏移量来进行计算。
    Redis高级数据结构之Bitmaps
  • gitbit获取值
  • gitbit key offset
  • 存在访问或则会返回1,对应的学号id没有访问过,或者学号都不存在都会返回0
    Redis高级数据结构之Bitmaps
  • bitcount获取Bitmaps指定范围位数上是1的个数
  • bitcount [strat] [end]
  • 从学号0到学号2019102860刚好这之间只有4人各自访问一次
    Redis高级数据结构之Bitmaps
  • bitop Bitmaps 间的运算
  • bitop op destkey key [key …]
  • 下面这个是求并集
  • and并集、or交集、not非、xor异或
    Redis高级数据结构之Bitmaps
  • 计算Bitmaps中第一个值为targetBit的位偏移量
  • bitpos key targetBit [start] [end]
  • start 、end可以省略,省略将会遍历整个Bitmaps
  • 返回值是字符串里面第一个被设置为0或者1的bit位
    Redis高级数据结构之Bitmaps

删除当前redis数据库中key的命令

  • flushdb

Redis高级数据结构之Bitmaps

  • flushall
  • 删除redis中全部key的命令
    Redis高级数据结构之Bitmaps

Bitmaps存储的优势对比

假设有一个网站,用户总量拥有一个亿。每天的日活用户量有5000万。现在我们分别使用集合类型、Bitmaps类型来进行存储活跃用户分析。 假如每一个用户id是Long长整型64位。集合类型的占据空间计算为64x50000000=3200000000位/8=400000000b/1024=390624KB/1024=381.4697265625MB 使用Bitmaps进行存储1位x1亿=1亿(位)/8=12500000b/1024=12207KB/1024=11.9209289MB

假设现在没有一个亿用户,只有50000个用户
集合类型计算就是64x50000=3200000位/8=400000b/1024=390.625KB/1024=0.38MB
Bitmaps类型存储是50000位/8=6250b/1024=60103515625KB/1024=0.059838388480392156MB文章来源地址https://www.toymoban.com/news/detail-471036.html

到了这里,关于Redis高级数据结构之Bitmaps的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 本文通过实例介绍了Redis的基础知识、数据类型、数据结构以及典型应用场景 值得一看!

    作者:禅与计算机程序设计艺术 2017年,Redis是基于MIT许可发布的一个开源的高性能键值数据库,其开发语言为C语言。它提供了多种数据类型(strings、hashes、lists、sets、sorted sets等),分布式支持(可横向扩展),内存存储,持久化功能,事务处理功能等。作为一种高性能的

    2024年02月06日
    浏览(10)
  • 【高级数据结构】树状数组

    目录 树状数组1 (单点修改,区间查询) 树状数组2(区间修改,单点查询) 树状数组1 (单点修改,区间查询) 题目链接:洛谷 树状数组1 题目描述 如题,已知一个数列,你需要进行下面两种操作: 将某一个数加上 x 求出某区间每一个数的和 输入格式 第一行包含两个正

    2024年02月15日
    浏览(16)
  • 【高级数据结构】线段树

    目录 树状数组1(单点修改,区间查询) 树状数组2(区间修改,单点查询) 线段树1(区间修改,区间查询) 代码源线段树1(查询最小值出现次数)  代码源线段树2(最大字段和) 树状数组1(单点修改,区间查询) 题目链接:  https://www.luogu.com.cn/problem/P3374 代码: 树状

    2024年02月15日
    浏览(26)
  • 数据结构高级算法

    数据结构高级算法

      目录 最小生成树 Kruskal(克鲁斯卡尔)(以边为核心) 9) 不相交集合(并查集合) 基础 Union By Size 图-相关题目 4.2 Greedy Algorithm 1) 贪心例子 Dijkstra Prim Kruskal 最优解(零钱兑换)- 穷举法 Leetcode 322 最优解(零钱兑换)- 贪心法 Leetcode 322 3) Huffman 编码问题 问题引入 Huffman 树 Huffm

    2024年02月21日
    浏览(13)
  • 【算法 & 高级数据结构】树状数组:一种高效的数据结构(一)

    【算法 & 高级数据结构】树状数组:一种高效的数据结构(一)

    🚀 个人主页 :为梦而生~ 关注我一起学习吧! 💡 专栏 :算法题、 基础算法~赶紧来学算法吧 💡 往期推荐 : 【算法基础 数学】快速幂求逆元(逆元、扩展欧几里得定理、小费马定理) 【算法基础】深搜 树状数组 (Binary Indexed Tree,BIT)是一种数据结构,用于高效地处理

    2024年03月11日
    浏览(18)
  • 【算法 & 高级数据结构】树状数组:一种高效的数据结构(二)

    【算法 & 高级数据结构】树状数组:一种高效的数据结构(二)

    🚀 个人主页 :为梦而生~ 关注我一起学习吧! 💡 专栏 :算法题、 基础算法、数据结构~赶紧来学算法吧 💡 往期推荐 : 【算法基础 数学】快速幂求逆元(逆元、扩展欧几里得定理、小费马定理) 【算法基础】深搜 数据结构各内部排序算法总结对比及动图演示(插入排序

    2024年03月26日
    浏览(11)
  • 【高级数据结构】Trie树

    【高级数据结构】Trie树

    高效地存储和查询字符串的数据结构。所以其重点在于:存储、查询两个操作。 示例和图片来自:https://blog.csdn.net/qq_42024195/article/details/88364485 假设有这么几个字符串:b,abc,abd,bcd,abcd,efg,hii。最终存储出来的Trie图如下图所示: 具体是怎么存的呢?对于每一个字符串,

    2024年03月10日
    浏览(8)
  • 高级数据结构——二叉搜索树

    高级数据结构——二叉搜索树

    目录 1. 二叉搜索树的概念 2. 二叉搜索树的实现 结点类 二叉搜索树的类 2.1 默认成员函数 2.1.1 构造函数 2.1.2 拷贝构造函数 2.1.3 赋值运算符重载函数 2.1.4 析构函数 2.2 中序遍历 2.3 insert插入函数 2.3.1 非递归实现 2.3.2 递归实现 2.4 erase删除函数 2.4.1 非递归实现 2.4.2 递归版本

    2024年02月10日
    浏览(7)
  • 高级数据结构 <二叉搜索树>

    高级数据结构 <二叉搜索树>

    本文已收录至《数据结构(C/C++语言)》专栏! 作者:ARMCSKGT 前面我们学习了二叉树,但仅仅只是简单的二叉树并没有很大的用处,而本节的二叉搜索树是对二叉树的升级,其查找效率相对于简单二叉树来说有一定提升,二叉搜索树是学习AVL树和红黑树的基础,所以我们必须先

    2024年02月04日
    浏览(9)
  • C++ 高级数据结构————[ 单调栈 ]

    C++ 高级数据结构————[ 单调栈 ]

    每周一篇的算法文章来了 今天讲解的是高级数据结构中的——单调栈 单调栈,顾名思义,就是升级版的栈() 先回顾一下栈把 栈 ,是一种线性表,它的特点是只能从一边进出,并且先进后出,后进先出。就想枪的弹夹一样。 而单调栈,跟他有一点不同 单调栈 ,每时每刻

    2023年04月20日
    浏览(8)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包