Skip to main content
The BITOP command in Redis is used to perform bitwise operations on multiple keys (or Redis strings) and store the result in a destination key. It supports standard logical operations (AND, OR, XOR, NOT) and advanced operations (DIFF, DIFF1, ANDOR, ONE) for complex bit manipulation.

Arguments

operation
'and' | 'or' | 'xor' | 'not' | 'diff' | 'diff1' | 'andor' | 'one'
required
Specifies the type of bitwise operation to perform:Standard Operations:
  • and: Bitwise AND
  • or: Bitwise OR
  • xor: Bitwise XOR
  • not: Bitwise NOT (only accepts one source key)
Advanced Operations (Redis 8.2+):
  • diff: A bit is set only if it’s set in all source bitmaps
  • diff1: A bit is set if it’s set in the first key but not in any of the other keys
  • andor: A bit is set if it’s set in X and also in one or more of Y1, Y2, …
  • one: A bit is set if it’s set in exactly one source key
destinationKey
string
required
The key to store the result of the operation in.
sourceKeys
...string[]
required
One or more keys to perform the operation on.

Response

The size of the string stored in the destination key.
// AND operation
await redis.bitop("and", "destKey", "sourceKey1", "sourceKey2");

// OR operation
await redis.bitop("or", "destKey", "sourceKey1", "sourceKey2");

// XOR operation
await redis.bitop("xor", "destKey", "sourceKey1", "sourceKey2");

// NOT operation (only accepts one source key)
await redis.bitop("not", "destKey", "sourceKey");

Advanced Operations Details (Redis 8.2+)

DIFF

A bit in the destination is set if it is set in all source bitmaps. This is equivalent to the intersection of all source bitmaps. Use Cases:
  • Finding common features across multiple datasets
  • Identifying users present in all segments
  • Intersection of multiple filters

DIFF1

A bit in the destination is set if it is set in the first key but not in any of the other keys. This finds bits unique to the first bitmap. Use Cases:
  • Finding exclusive features
  • Identifying users in one segment but not in others
  • Exclusion filtering

ANDOR

A bit in the destination is set if it is set in X and also in one or more of Y1, Y2, …. This implements “X AND (Y1 OR Y2 OR …)” logic. Use Cases:
  • Required condition with optional alternatives
  • Users with a required attribute and at least one optional attribute
  • Complex filtering with mandatory and optional criteria

ONE

A bit in the destination is set if it is set in exactly one of the source keys. This finds bits that are unique to a single source. Use Cases:
  • Finding unique occurrences
  • Identifying exclusive memberships
  • Detecting singular conditions across multiple sets
The advanced operations (DIFF, DIFF1, ANDOR, ONE) are available in Redis 8.2.0 and later.