Method: Redis::Commands::Keys#scan_each

Defined in:
lib/redis/commands/keys.rb

#scan_each(**options, &block) ⇒ Enumerator

Scan the keyspace

See the [Redis Server SCAN documentation](redis.io/docs/latest/commands/scan/) for further details

Examples:

Retrieve all of the keys (with possible duplicates)

redis.scan_each.to_a
  # => ["key:21", "key:47", "key:42"]

Execute block for each key matching a pattern

redis.scan_each(:match => "key:1?") {|key| puts key}
  # => key:13
  # => key:18

Execute block for each key of a type

redis.scan_each(:type => "hash") {|key| puts redis.type(key)}
  # => "hash"
  # => "hash"

Parameters:

  • options (Hash)
    • ‘:match => String`: only return keys matching the pattern

    • ‘:count => Integer`: return count keys at most per iteration

    • ‘:type => String`: return keys only of the given type

Returns:

  • (Enumerator)

    an enumerator for all found keys



53
54
55
56
57
58
59
60
61
62
# File 'lib/redis/commands/keys.rb', line 53

def scan_each(**options, &block)
  return to_enum(:scan_each, **options) unless block_given?

  cursor = 0
  loop do
    cursor, keys = scan(cursor, **options)
    keys.each(&block)
    break if cursor == "0"
  end
end