Module: Emb
- Defined in:
- lib/emb.rb,
lib/emb/batch.rb,
lib/emb/multi.rb,
lib/emb/proxy.rb,
lib/emb/client.rb,
lib/emb/version.rb,
lib/emb/middleware.rb
Defined Under Namespace
Classes: BatchModelProxy, BatchProxy, Client, Middleware, MultiProxy, Proxy
Constant Summary
collapse
- BATCH_KEY =
:emb
- BATCH_BLOCK =
lambda do |items, loader, _args|
items.group_by(&:first).each do |client, client_items|
pairs = client_items.flat_map { |_, model, text| Array(text).flat_map { |t| [model.to_s, t] } }
results = Array(client.send_command('EMB.MULTI', *pairs))
offset = 0
client_items.each do |item|
_, _, text = item
texts = Array(text)
values = results[offset, texts.size].map { |entry| entry&.unpack('e*') }
offset += texts.size
loader.call(item, values.size == 1 ? values.first : values)
end
end
end
- DEFAULTS =
{ host: 'localhost', port: 6379, pool: 5 }.freeze
- VERSION =
Gem.loaded_specs['emb']&.version&.to_s || '0.0.0'
Class Method Summary
collapse
Class Method Details
.[](name) ⇒ Object
20
|
# File 'lib/emb.rb', line 20
def [](name) = default_client[name]
|
.batch ⇒ Object
21
|
# File 'lib/emb.rb', line 21
def batch = default_client.batch
|
.build_batch_loader(client, model, text) ⇒ Object
27
28
29
|
# File 'lib/emb/batch.rb', line 27
def build_batch_loader(client, model, text)
BatchLoader.for([client, model, text]).batch(key: BATCH_KEY, &BATCH_BLOCK)
end
|
.debug! ⇒ Object
34
35
36
|
# File 'lib/emb.rb', line 34
def debug!
@debug = true
end
|
.debug? ⇒ Boolean
31
|
# File 'lib/emb.rb', line 31
def debug? = @debug
|
.help ⇒ Object
25
|
# File 'lib/emb.rb', line 25
def help = default_client.help
|
.info(name) ⇒ Object
23
|
# File 'lib/emb.rb', line 23
def info(name) = default_client.info(name)
|
.models ⇒ Object
22
|
# File 'lib/emb.rb', line 22
def models = default_client.models
|
.multi ⇒ Object
29
|
# File 'lib/emb.rb', line 29
def multi(&) = default_client.multi(&)
|
.new ⇒ Object
12
|
# File 'lib/emb.rb', line 12
def new(...) = Client.new(...)
|
.ping ⇒ Object
26
|
# File 'lib/emb.rb', line 26
def ping = default_client.ping
|
.ready ⇒ Object
27
|
# File 'lib/emb.rb', line 27
def ready = default_client.ready
|
.ready? ⇒ Boolean
28
|
# File 'lib/emb.rb', line 28
def ready? = default_client.ready?
|
.reset_registry! ⇒ Object
30
|
# File 'lib/emb.rb', line 30
def reset_registry! = default_client.reset_registry!
|
.send_command ⇒ Object
32
|
# File 'lib/emb.rb', line 32
def send_command(*) = default_client.send_command(*)
|
.setup ⇒ Object
Also known as:
config
14
15
16
|
# File 'lib/emb.rb', line 14
def setup(...)
@default_client = Client.new(...)
end
|
.stats ⇒ Object
24
|
# File 'lib/emb.rb', line 24
def stats = default_client.stats
|