Redis 基础教程

Redis 命令

Redis 高级教程

Redis 笔记

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/redis-command-bitop.html

Redis BITOP 命令

Redis 字符串(Strings)底层数据结构及所有相关命令 Redis 字符串(Strings)底层数据结构及所有相关命令


Redis BITOP 命令对一个或多个保存二进制位的字符串 key 进行位操作,并将结果保存到 destkey 上。

命令格式

BITOP operation destkey key [key ...]

可用版本:>=2.6.0

时间复杂度:O(N)

BITOP 操作支持 4 种位运算操作,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(取反)操作之外,其他操作都可以接受一个或多个 key 作为输入。

处理不同长度的字符串

当 BITOP 处理不同长度的字符串时,较短的那个字符串所缺少的部分会被看作 0。

空的 key 也被看作是包含 0 的字符串序列。

返回值

保存到 destkey 的字符串的长度,和输入 key 中最长的字符串长度相等。

BITOP 的时间复杂度为 O(N),当处理大型矩阵(matrix)或者进行大数据量的统计时,最好将任务指派到从节点(slave)进行,避免阻塞主节点。

应用场景

使用 bitop 实现用户上线次数统计。BITOP 是对 BITCOUNT 命令一个很好的补充。不同的 bitmaps 进行组合操作可以获得目标 bitmap 以进行用户操作相关统计。

性能

BITOP 在长字符串处理相对缓慢,因为它的时间复杂度为 O(N);对于实时性高的需求,涉及长字符串的处理一个很好的方法是使用 bit-wise 操作以避免阻塞主实例。

示例

redis> SET key1 foobar
OK
redis> SET key2 abcdef
OK
redis> BITOP AND dest key1 key2
(integer) 6
redis> GET dest
"`bc`ab"
Redis OBJECT 命令允许从内部查看指定 key 的 Redis 对象信息。它通常用在调试,或者了解相关 key 是否使用特殊编码的 ...
SORT命令返回或保存指定列表、集合、有序集合key中经过排序的元素。 ...
Redis GET 命令返回指定 key 所关联的字符串值。如果指定的 key 不存在时,返回特殊值 nil。此外,如果指定的 key 存储 ...
TYPE 命令返回指定 key 所储存的值的类型。 ...
Redis COMMAND 命令用于返回所有的 Redis 命令的详细信息,并以数组形式展示。 ...