Module: Redis::Commands::Bitmaps

Included in:
Redis::Commands
Defined in:
lib/redis/commands/bitmaps.rb

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



33
34
35
36
37
# File 'lib/redis/commands/bitmaps.rb', line 33

def bitcount(key, start = 0, stop = -1, scale: nil)
  command = [:bitcount, key, start, stop]
  command << scale if scale
  send_command(command)
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`



45
46
47
48
49
50
# File 'lib/redis/commands/bitmaps.rb', line 45

def bitop(operation, destkey, *keys)
  keys.flatten!(1)
  command = [:bitop, operation, destkey]
  command.concat(keys)
  send_command(command)
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)


62
63
64
65
66
67
68
69
70
# File 'lib/redis/commands/bitmaps.rb', line 62

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

  command = [:bitpos, key, bit]
  command << start if start
  command << stop if stop
  command << scale if scale
  send_command(command)
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`



21
22
23
# File 'lib/redis/commands/bitmaps.rb', line 21

def getbit(key, offset)
  send_command([:getbit, 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`



12
13
14
# File 'lib/redis/commands/bitmaps.rb', line 12

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