BITOP的
语法
BITOP <AND | OR | XOR | NOT> destkey key [key ...]
- 从以下位置开始可用:
- 2.6.0
- 时间复杂度:
- O(N)
- ACL 类别:
-
@write
,@bitmap
,@slow
,
在多个键(包含字符串值)之间执行按位运算,并且 将结果存储在 Destination Key 中。
这BITOP
command 支持四种按位运算: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
命令
文档。
可以组合不同的位图以获得目标位图,其中
执行 Population count作。
请参阅名为“使用 Redis 快速、轻松地使用实时指标”的文章 bitmaps“来了解有趣的用例。
性能注意事项
BITOP
是一个可能很慢的命令,因为它在 O(N) 时间内运行。
针对长 Importing 字符串运行它时应小心。
对于涉及大量输入的实时指标和统计信息,一种很好的方法是 要使用副本(启用了 replica-read-only 选项),其中 bit-wise 执行作以避免阻塞 Master 实例。