BITOP
Syntax
BITOP <AND | OR | XOR | NOT> destkey key [key ...]
- Available since:
- 2.6.0
- Time complexity:
- O(N)
- ACL categories:
-
@write
,@bitmap
,@slow
,
在多个键(包含字符串值)之间执行位操作,并将结果存储在目标键中。
BITOP
命令支持四种位操作:AND、OR、XOR 和 NOT,因此调用该命令的有效形式为:
BITOP AND destkey srckey1 srckey2 srckey3 ... srckeyN
BITOP OR destkey srckey1 srckey2 srckey3 ... srckeyN
BITOP XOR destkey srckey1 srckey2 srckey3 ... srckeyN
BITOP NOT destkey srckey
正如你所见,NOT 是特殊的,因为它只接受一个输入键,因为它执行位反转,所以它只作为一元运算符才有意义。
操作的结果总是存储在destkey
。
处理不同长度的字符串
当在不同长度的字符串之间执行操作时,所有比集合中最长字符串短的字符串都被视为已用零填充到最长字符串的长度。
对于不存在的键也是如此,它们被视为一串零字节,直到最长字符串的长度。
示例
模式:使用位图的实时指标
BITOP
是对 BITCOUNT
命令文档中记录的模式的一个很好的补充。
可以组合不同的位图以获得目标位图,然后在该位图上执行人口计数操作。
请参阅名为“使用Redis位图快速简便的实时指标”的文章,了解有趣的使用案例。
性能考虑
BITOP
是一个可能较慢的命令,因为它在 O(N) 时间内运行。
在处理长输入字符串时应小心。
对于涉及大量输入的实时指标和统计,一个好的方法是使用一个启用了只读副本选项的副本,在该副本上执行位操作,以避免阻塞主实例。