Module: Valkey::Commands::BitmapCommands

Included in:
Valkey::Commands
Defined in:
lib/valkey/commands/bitmap_commands.rb

Overview

this module contains commands related to BITMAP data type.

Instance Method Summary collapse

Instance Method Details

#bitcount(key, start = 0, stop = -1,, scale: nil) ⇒ Integer

Count the number of set bits in a range of the string value stored at key.

Parameters:

  • key (String)
  • start (Integer) (defaults to: 0)

    start index

  • stop (Integer) (defaults to: -1,)

    stop index

  • scale (String, Symbol) (defaults to: nil)

    the scale of the offset range e.g. ‘BYTE’ - interpreted as a range of bytes, ‘BIT’ - interpreted as a range of bits

Returns:

  • (Integer)

    the number of bits set to 1



37
38
39
40
41
# File 'lib/valkey/commands/bitmap_commands.rb', line 37

def bitcount(key, start = 0, stop = -1, scale: nil)
  args = [key, start, stop]
  args << scale if scale
  send_command(RequestType::BIT_COUNT, args)
end

#bitfield(key, *args) ⇒ Object



57
58
59
# File 'lib/valkey/commands/bitmap_commands.rb', line 57

def bitfield(key, *args)
  send_command(RequestType::BIT_FIELD, [key] + args.map(&:to_s))
end

#bitfield_ro(key, *args) ⇒ Object



61
62
63
# File 'lib/valkey/commands/bitmap_commands.rb', line 61

def bitfield_ro(key, *args)
  send_command(RequestType::BIT_FIELD_READ_ONLY, [key] + args.map(&:to_s))
end

#bitop(operation, destkey, *keys) ⇒ Integer

Perform a bitwise operation between strings and store the resulting string in a key.

Parameters:

  • operation (String)

    e.g. ‘and`, `or`, `xor`, `not`

  • destkey (String)

    destination key

  • keys (String, Array<String>)

    one or more source keys to perform ‘operation`

Returns:

  • (Integer)

    the length of the string stored in ‘destkey`



49
50
51
52
53
54
55
# File 'lib/valkey/commands/bitmap_commands.rb', line 49

def bitop(operation, destkey, *keys)
  keys.flatten!(1)
  args = [operation, destkey]
  args.concat(keys)

  send_command(RequestType::BIT_OP, args)
end

#bitpos(key, bit, start = nil, stop = nil, scale: nil) ⇒ Integer

Return the position of the first bit set to 1 or 0 in a string.

Parameters:

  • key (String)
  • bit (Integer)

    whether to look for the first 1 or 0 bit

  • start (Integer) (defaults to: nil)

    start index

  • stop (Integer) (defaults to: nil)

    stop index

  • scale (String, Symbol) (defaults to: nil)

    the scale of the offset range e.g. ‘BYTE’ - interpreted as a range of bytes, ‘BIT’ - interpreted as a range of bits

Returns:

  • (Integer)

    the position of the first 1/0 bit. -1 if looking for 1 and it is not found or start and stop are given.

Raises:

  • (ArgumentError)


75
76
77
78
79
80
81
82
83
# File 'lib/valkey/commands/bitmap_commands.rb', line 75

def bitpos(key, bit, start = nil, stop = nil, scale: nil)
  raise(ArgumentError, 'stop parameter specified without start parameter') if stop && !start

  args = [key, bit]
  args << start if start
  args << stop if stop
  args << scale if scale
  send_command(RequestType::BIT_POS, args)
end

#getbit(key, offset) ⇒ Integer

Returns the bit value at offset in the string value stored at key.

Parameters:

  • key (String)
  • offset (Integer)

    bit offset

Returns:

  • (Integer)

    ‘0` or `1`



25
26
27
# File 'lib/valkey/commands/bitmap_commands.rb', line 25

def getbit(key, offset)
  send_command(RequestType::GET_BIT, [key, offset])
end

#setbit(key, offset, value) ⇒ Integer

Sets or clears the bit at offset in the string value stored at key.

Parameters:

  • key (String)
  • offset (Integer)

    bit offset

  • value (Integer)

    bit value ‘0` or `1`

Returns:

  • (Integer)

    the original bit value stored at ‘offset`



16
17
18
# File 'lib/valkey/commands/bitmap_commands.rb', line 16

def setbit(key, offset, value)
  send_command(RequestType::SET_BIT, [key, offset, value])
end