当前位置:   article > 正文

redis之位图_位图活跃

位图活跃

目录

一:概念

二:命令(先创建一个string类型的key)

1:设置某一位上的值

2:获取某一位上的值

3:返回指定值0或者1在指定区间上第一次出现的位置

4:位操作

5:统计指定位区间上值为1的个数

 三:案例

1:网站用户的上线次数统计(活跃用户)

 2:按天统计网站活跃用户


一:概念

位图不是真正的数据类型,它是定义在字符串类型中

一个字符串类型的值最多能存储512M字节的内容

位上限:2^(9+10+10+3)=2^32b

string转换成bit剩下的不是null而是0,在redis中0不是数据

二:命令(先创建一个string类型的key)

1:设置某一位上的值

SETBIT key offset value

offset偏移量,从0开始

value不写,默认是0

 

2:获取某一位上的值

GETBIT key offset

3:返回指定值0或者1在指定区间上第一次出现的位置

BITPOS key bit [start] [end]((指的是位)

例如:a 0110 0001获取 大于7的时候是0 用不用都在那里最大是512*1024*1024*8

b 0110 0001

ab 会是0110 0001 0110 0001

4:位操作

对一个或多个保存二进制位的字符串 key 进行位元操作,并将结果保存到 dteskey 上

operation 可以是 AND(都为1才为1) 、 OR(有1则1) 、 NOT 、 XOR(都是0或者都为1才为1否则为0) 这四种操作中的任意一种

BITOP AND destkey key [key ...] ,对一个或多个 key 求逻辑并,并将结果保存到 destkey

BITOP OR destkey key [key ...] ,对一个或多个 key 求逻辑或,并将结果保存到 destkey

BITOP XOR destkey key [key ...] ,对一个或多个 key 求逻辑异或,并将结果保存到 destkey

BITOP NOT destkey key ,对给定 key 求逻辑非,并将结果保存到 destkey

除了 NOT 操作之外,其他操作都可以接受一个或多个 key 作为输入

当 BITOP 处理不同长度的字符串时,较短的那个字符串所缺少的部分会被看作 0

空的 key 也被看作是包含 0 的字符串序列

  1. a --> 01100001
  2. b --> 01100010
  3. and
  4. BITOP and dest1 a b
  5. a and b ---> 01100000
  6. or
  7. BITOP or dest2 a b
  8. a or b --> 01100011
  9. xor
  10. BITOP xor dest2 a b
  11. a or b --> 00000011
  12. not
  13. BITOP not dest4 a
  14. a ---> 10011110
  15. redis的数据再内存中,位运算效率极高

5:统计指定位区间上值为1的个数

BITCOUNT key [start] [end]区间不给默认是所有

从左向右从0开始,从右向左从-1开始,注意官方start、end是位,测试后是字节按照8位一个区间一个位图来进行计算

BITCOUNT testkey 0 0表示从索引为0个字节到索引为0个字节,就是第一个字节的统计

BITCOUNT testkey 0 -1等同于BITCOUNT testkey

最常用的就是 BITCOUNT testkey

 三:案例

1:网站用户的上线次数统计(活跃用户)

分析:

用户ID为key,天作为offset,上线置为1

例如:ID为500的用户,今年的第1天上线、第30天上线 SETBIT u500 1 1 SETBIT u500 30 1

用:BITCOUNT u500 KYES u*

 2:按天统计网站活跃用户

分析:

天作为key,用户ID为offset,上线置为1

例如:求一段时间内活跃用户数 SETBIT 20160602 15 1

SETBIT 20160601 123 1 SETBIT 20160606 123 1

求6月1日到6月10日的活跃用户

BITOP OR 20160601-10 20160601 20160602 20160603 20160610

BITCOUNT 20160601-10 结果为2

 

 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号