Redis 中的位运算

一、基本用法

任何一门程序语言都离不开位运算这个功能,redis 虽然不是一门编程语言,但也是一个和编程密切关联的工具。因此位运算自然也是 redis 中不可或缺的功能。

redis 中位运算相关的方法:

  • GETBIT key offset:获取第 offset 位的 bit,不存的的比特位返回 0 。
  • SETBIT key offset value:给第 offset 位设置成 value 。
  • BITCOUNT key [start] [end]:计算 key 中 1 的个数。
  • BITOP operation destkey key [key]:执行位操作,位操作包含与 (AND)或 (OR)异或 (XOR)以及 非 (NOT)
  • BITPOS key value [start] [end]:查询 key 中第一次出现 value 的位置,startend 表示字符的开始和结束位置。

二、使用示例

以字符串 maqian 为示例,对应的 ASCII 码和二进制位如下所示:

对 redis 而言,它不会和我们一样给每个字符一一对应到二进制数据,对计算机而言,它能看到的就是图中第三行的数据。

2.1 获取比特

name 设置值为 maqian,获取前 8 个字节分别对应 m 的比特位:

2.2 计算 1 的个数

maqian 字符串中 1 的个数为 5+3+4+4+3+5=24 个,可以使用 redis 获取这个值:

2.3 修改比特位

把第 m 的第六位变成 1,即相当于把 m 的 ascii 码+2,此时字符表示的是 o :

2.4 逻辑操作

2.5 查询第一个 1 的位置

 

 

 

 

发表评论