Module: RedisCopy::KeyEmitter

Included in:
Default
Defined in:
lib/redis-copy/key-emitter.rb

Overview

A Key emitter emits keys. This is built to be an abstraction on top of redis.keys(‘*’) (implemented by RedisCopy::KeyEmitter::Default), but should allow smarter implementations to be built that can handle billion-key dbs without blocking on IO.

Defined Under Namespace

Classes: Default

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.load(redis, ui, options = {}) ⇒ Object



10
11
12
13
14
15
# File 'lib/redis-copy/key-emitter.rb', line 10

def self.load(redis, ui, options = {})
  key_emitter = options.fetch(:key_emitter, :default)
  const_name = key_emitter.to_s.camelize
  require "redis-copy/key-emitter/#{key_emitter}" unless const_defined?(const_name)
  const_get(const_name).new(redis, ui, options)
end

Instance Method Details

#initialize(redis, ui, options = {}) ⇒ Object

Parameters:

  • redis (Redis)
  • options (Hash<Symbol:String>) (defaults to: {})


19
20
21
22
23
# File 'lib/redis-copy/key-emitter.rb', line 19

def initialize(redis, ui, options = {})
  @redis    = redis
  @ui       = ui
  @options  = options
end

#keysEnumerable<String>

Returns:

  • (Enumerable<String>)

Raises:

  • (NotImplementedError)


26
27
28
29
# File 'lib/redis-copy/key-emitter.rb', line 26

def keys
  return super if defined?(super)
  raise NotImplementedError
end

#to_sObject



31
32
33
# File 'lib/redis-copy/key-emitter.rb', line 31

def to_s
  self.class.name.demodulize.humanize
end