zoukankan      html  css  js  c++  java
  • BITOP operation destkey key [key ...]

    地址:http://www.redis.cn/commands/bitop.html

    对一个或多个保存二进制位的字符串 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操作以避免阻塞主实例。

  • 相关阅读:
    SpringBoot 项目瘦身
    对比两个文本的异同
    Spring 事务不起作用的场景
    Controller 层数据校验实现思路
    Notify 类的实现思路
    backup: 使用 vim 时一定会用到的设置 --for-myself
    exercise: 反射获取指定的属性值 --CSharp
    exercise: 序列化和反序列化Xml --CSharp
    前缀
    华罗庚的数学思想
  • 原文地址:https://www.cnblogs.com/smallleiit/p/12542251.html
Copyright © 2011-2022 走看看