Redis Strings – BITOP命令

2020年8月9日17:35:42 评论 34

BITOP operation destkey key [key ...]

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

BITOP 命令支持 AND 、 OR 、 NOT 、 XOR 这四种操作中的任意一种参数:

  • BITOP AND destkey srckey1 srckey2 srckey3 ... srckeyN ,对一个或多个 key 求逻辑并,并将结果保存到 destkey 。
  • BITOP OR destkey srckey1 srckey2 srckey3 ... srckeyN,对一个或多个 key 求逻辑或,并将结果保存到 destkey 。
  • BITOP XOR destkey srckey1 srckey2 srckey3 ... srckeyN,对一个或多个 key 求逻辑异或,并将结果保存到 destkey 。
  • BITOP NOT destkey srckey,对给定 key 求逻辑非,并将结果保存到 destkey 。

除了 NOT 操作之外,其他操作都可以接受一个或多个 key 作为输入。

执行结果将始终保持到destkey里面。

处理不同长度的字符串

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

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

返回值

Integer reply

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

例子

redis> SET key1 "foobar"
OK
redis> SET key2 "abcdef"
OK
redis> BITOP AND dest key1 key2
(integer) 6
redis> GET dest
"`bc`ab"
redis>

模式:使用 bitop 实现用户上线次数统计

BITOP是对BITCOUNT命令一个很好的补充。

不同的bitmaps进行组合操作可以获得目标bitmap以进行人口统计操作。

Fast easy realtime metrics using Redis bitmaps这篇文章介绍了一个有趣的用例。

性能

BITOP可能是一个缓慢的命令,它的时间复杂度是O(N)。 在处理长字符串时应注意一下效率问题。

对于实时的指标和统计,涉及大输入一个很好的方法是 使用bit-wise操作以避免阻塞主实例。


相关参考链接

Strings相关命令:

命令组 命令
Strings (字符串) APPEND;   BITCOUNT;   BITFIELD;   BITOP;   BITPOS;
DECR;   DECRBY;   GET;   GETBIT;   GETRANGE;   GETSET;
INCR;   INCRBY;   INCRBYFLOAT;
MGET;   MSET;   MSETNX;   PSETEX;
SET;   SETBIT;   SETEX;   SETNX;   SETRANGE;   STRLEN

全部命令组:Keys(键)Strings(字符串)Hashes(哈希表)Lists(列表)Sets(集合)Sorted Sets(有序集合)Pub/Sub(发布/订阅)Scripting(脚本)Server(服务器)Transactions(事物)Geo(地理位置)Cluster(集群)Connection(连接)Streams(流)HyperLogLog

回到总目录:Redis命令参考手册(总目录)

素课网
  • 本文由 发表于 2020年8月9日17:35:42
  • 转载请注明:https://www.suketech.com/8867.html
Redis Cluster – READONLY命令 Redis命令参考

Redis Cluster – READONLY命令

READONLY 起始版本:3.0.0 时间复杂度:O(1) 开启与 Redis Cluster 从节点连接的读请求 通常,从节点将重定向客户端到认证过的主节点,以获取在指定命令中所涉及的哈希槽,然而...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: