BITOP
语法
BITOP <AND | OR | XOR | NOT> destkey key [key ...]
- 可用版本
- Redis 开源版 2.6.0
- 时间复杂度
- O(N)
- ACL 分类
-
@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) 的时间运行。对长输入字符串执行此命令时应小心。
对于涉及大量输入的实时指标和统计,一个好的方法是使用副本(启用 replica-read-only 选项),在副本上执行位运算以避免阻塞主实例。