• Redis之Bitmaps


    Bitmaps本身不是一种数据结构,实际上它就是字符串 ,但是它可以对字符串的位进行操作。

    Bitmaps单独提供了一套命令,所以在Redis中使用Bitmaps和使用字符串的方法不太相同。

    可以把Bitmaps想象成一个以位为单位的数组,数组的每个单元只能存储0和1,数组的下标在Bitmaps中叫做偏移量。

    常用命令:

    设置值
    setbit key offset value
    
    获取值
    gitbit key offset
    
    获取Bitmaps指定范围值为1的个数(不指定范围默认获取所有)
    bitcount key [start] [end]
    start/end代表索引字节,即从第start个字节开始,到第end个字节结束
    
    
    Bitmaps间的运算
    bitop op destkey key [key....]
    op可以是and/or/not/xor
    bitop是一个复合操作, 它可以做多个Bitmaps的and(交集)、or(并集)、not(非)、xor(异或) 操作并将结果保存在destkey中。
    示例:(取unique:users:2016-04-03和unique:users:2016-04-03的交集,放在unique:users:and:2016-04-04_03中)
    bitop and unique:users:and:2016-04-04_03 unique:users:2016-04-03 unique:users:2016-04-03
    
    
    计算Bitmaps中第一个值为targetBit的偏移量
    bitpos key targetBit [start] [end]

    应用场景

    假设网站有1亿用户,每天独立访问的用户有5千万,如果每天用集合类型和Bitmaps分别存储活跃用户可以得到下表。


    很明显, 这种情况下使用Bitmaps能节省很多的内存空间, 尤其是随着时间推移节省的内存还是非常可观的,见下表。


    但Bitmaps并不是万金油,假如该网站每天的独立访问用户很少,例如只有10万(大量的僵尸用户) ,那么两者的对比如下表所示,很显然,这时候使用Bitmaps就不太合适了,因为基本上大部分位都是0。

  • 相关阅读:
    pygame各个模块概述
    安装pygame
    pygame系列
    把字符串转换成整数
    不用加减乘除做加法
    求1+2+3+...+n
    孩子们的游戏(圆圈中最后剩下的数)
    翻转单词顺序列
    左旋转字符串
    和为s的两个数字
  • 原文地址:https://www.cnblogs.com/MacoLee/p/13999950.html
Copyright © 2020-2023  润新知