Sha256: 9622d2302097d64328b1744d52666696c8612fd3921b358f8d8d9ccfdfcef9a1

Contents?: true

Size: 1.14 KB

Versions: 1

Compression:

Stored size: 1.14 KB

Contents

require 'dalli'

module Prefatory
  module Storage
    class MemcachedProvider
      include Prefatory::Keys
      DEFAULT_SERVER = '127.0.0.1:11211'.freeze
      DEFAULT_OPTIONS = {namespace: 'prefatory', compress: true}

      def initialize(options, ttl=nil, key_prefix=nil)
        @ttl = ttl
        @key_prefix = key_prefix
        @client = Dalli::Client.new(default_servers(options), default_options(options))
      end

      def set(key, value, ttl=nil)
        @client.set(key, value, ttl||@ttl)
      end

      def get(key)
        @client.get(key)
      end

      def delete(key)
        @client.delete(key)
      end

      def key?(key)
        v = @client.fetch(key){:does_not_exists}
        v != :does_not_exists
      end

      def next_key(obj=nil)
        build_key(obj, @client.incr(build_key(obj, nil, @key_prefix), 1, nil, 0), @key_prefix)
      end

      private

      def default_servers(options)
        return options[:servers] if options&.fetch(:servers) {false}
        DEFAULT_SERVER
      end

      def default_options(options)
        return options.except(:servers) if options
        DEFAULT_OPTIONS
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
prefatory-0.1.1 lib/prefatory/storage/memcached_provider.rb