Redis Bitmap

Redis提供对字符串的按位操作,位图把字符串抽象成一个bool类型的数组,可以进行按位操作

比如说我有一个字符串“a” 那他的位图如下

(位) 7 6 5 4 3 2 1 0
(值) ‭0 1 0 0 0 0 0 1

Redis中对位提供的操作有以下几种

  • setbit key offset value
  • getbit key offset
    • 127.0.0.1:6379> set k1 2
      OK
      127.0.0.1:6379> getbit k1 1
      (integer) 0
      127.0.0.1:6379> setbit k1 1 1
      (integer) 0
      127.0.0.1:6379> get k1
      "r"
    bitcount  key  [start] [end]
    • 127.0.0.1:6379> bitcount k1 0 7
      (integer) 4
    bittop 命令对于所给定的k1 k2 按位操作存入 destkey中
    • bittop and destkey k1 k2 .... 求交集
    • bittop or destkey k1 k2 ...   并集
    • bittop xor destkey k1 k2 ..  亦或
    • bit not destkey k1  取非
  • bitpos key targetbit start end 寻找在start和end范围中第一个 位与 targetbit 相等的位置。
127.0.0.1:6379> bitpos k1 1            //不写范围 默认全部范围
(integer) 1

  

可以用于上限超大的连续性的数字编号统计,在不牺牲查询速度的前提下,缩小存储空间。

如用户id的统计,统计当天内访问网站的用。

原文地址:https://www.cnblogs.com/chafanbusi/p/10699749.html