Sha256: dedfbeb139da0af0ed714ebb64f696d78396651e993fe01cec048ffefe53a25d
Contents?: true
Size: 1.44 KB
Versions: 1
Compression:
Stored size: 1.44 KB
Contents
require 'dalli' module Prefatory module Storage class MemcachedProvider DEFAULT_SERVER = '127.0.0.1:11211'.freeze DEFAULT_OPTIONS = {namespace: Prefatory.config.keys.prefix, compress: true, cache_nils: true} def initialize(options = nil, ttl = nil, key_generator: Prefatory.config.keys.generator.new, marshaler: Prefatory.config.storage.marshaler) @ttl = ttl @key_generator = key_generator @marshaler = marshaler @client = Dalli::Client.new(default_servers(options), default_options(options)) end def set(key, value, ttl = nil) @client.set(prefix(key), @marshaler.dump(value), ttl || @ttl) end def get(key) value = @client.get(prefix(key)) value ? @marshaler.load(value) : value end def delete(key) @client.delete(prefix(key)) end def key?(key) v = @client.fetch(prefix(key)) {:does_not_exists} v != :does_not_exists end def next_key(obj = nil) @key_generator.key(obj) end private def prefix(key) @key_generator.prefix(key) end def default_servers(options) return options[:servers] if options&.fetch(:servers) {false} DEFAULT_SERVER end def default_options(options) return options.select {|key| key != :servers} if options DEFAULT_OPTIONS end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
prefatory-0.1.2 | lib/prefatory/storage/memcached_provider.rb |