BITOP
Performs bitwise operations between multiple bitmaps and stores the result in a destination key.
Syntax
BITOP operation destkey key [key ...]
Parameters
- operation: The bitwise operation to perform. Options are:
AND: Bitwise ANDOR: Bitwise ORXOR: Bitwise XORNOT: Bitwise NOT (unary operation)
- destkey: The key where the result of the bitwise operation will be stored.
- key: One or more keys to perform the bitwise operation on. These are the source bitmaps.
Details
- Available since: 2.6.0
- Time complexity: O(N) where N is the size of the bitmaps.
- ACL categories:
@write,@bitmap,@slow
The BITOP command performs bitwise operations on one or more bitmaps and stores the result in a new key. It supports several bitwise operations including AND, OR, XOR, and NOT. The command operates on byte-level granularity and the result will be of the same length as the longest input bitmap.
Operation Types
- AND: Performs a bitwise AND between all input bitmaps and stores the result in
destkey. - OR: Performs a bitwise OR between all input bitmaps and stores the result in
destkey. - XOR: Performs a bitwise XOR between all input bitmaps and stores the result in
destkey. - NOT: Performs a bitwise NOT on a single input bitmap and stores the result in
destkey.
Examples
Bitwise AND Operation
Assume we have the following keys with bitmap values:
SETBIT mykey1 0 1
SETBIT mykey1 1 1
SETBIT mykey2 0 1
SETBIT mykey2 1 0
To perform a bitwise AND operation between mykey1 and mykey2 and store the result in resultkey:
BITOP AND resultkey mykey1 mykey2
The value of resultkey will be 01, as the bitwise AND operation results in 01.
Bitwise OR Operation
To perform a bitwise OR operation between mykey1 and mykey2:
BITOP OR resultkey mykey1 mykey2
The value of resultkey will be 11, as the bitwise OR operation results in 11.
Bitwise XOR Operation
To perform a bitwise XOR operation between mykey1 and mykey2:
BITOP XOR resultkey mykey1 mykey2
The value of resultkey will be 11, as the bitwise XOR operation results in 11.
Bitwise NOT Operation
To perform a bitwise NOT operation on mykey1:
BITOP NOT resultkey mykey1
The result will be the bitwise NOT of mykey1. If mykey1 had a value of 01, the result will be the complement, which depends on the bit-width (e.g., 10 for an 8-bit width).
Edge Cases
- If
destkeyalready exists, it will be overwritten with the result. - If
keydoes not exist, it is treated as an empty bitmap. - If
NOToperation is used, only a singlekeyshould be specified.
RESP2/RESP3 Reply
- Integer reply: the length of the resulting bitmap in bytes.