BITOP destkey operation key [key ...]
对一个或多个保存二进制位的字符串 key 进行位元操作,并将结果保存到 destkey 上。
operation 可以是 AND 、 OR 、 NOT 、 XOR 这四种操作中的任意一种:
除了 NOT 操作之外,其他操作都可以接受一个或多个 key 作为输入。
处理不同长度的字符串
当 BITOP 处理不同长度的字符串时,较短的那个字符串所缺少的部分会被看作 0 。
空的 key 也被看作是包含 0 的字符串序列。
注解
BITOP 的复杂度为 O(N) ,当处理大型矩阵(matrix)或者进行大数据量的统计时,最好将任务指派到附属节点(slave)进行,避免阻塞主节点。
redis 127.0.0.1:6379> SETBIT bits-1 0 1 # bits-1 = 1001
(integer) 0
redis 127.0.0.1:6379> SETBIT bits-1 3 1
(integer) 0
redis 127.0.0.1:6379> SETBIT bits-2 0 1 # bits-2 = 1011
(integer) 0
redis 127.0.0.1:6379> SETBIT bits-2 1 1
(integer) 0
redis 127.0.0.1:6379> SETBIT bits-2 3 1
(integer) 0
redis 127.0.0.1:6379> BITOP AND and-result bits-1 bits-2
(integer) 1
redis 127.0.0.1:6379> GETBIT and-result 0 # and-result = 1001
(integer) 1
redis 127.0.0.1:6379> GETBIT and-result 1
(integer) 0
redis 127.0.0.1:6379> GETBIT and-result 2
(integer) 0
redis 127.0.0.1:6379> GETBIT and-result 3
(integer) 1