Sha256: a2ca36ed264c37821a15c01e62ff451981f7083217f618b3858ed0620cf15c2c

Contents?: true

Size: 867 Bytes

Versions: 28

Compression:

Stored size: 867 Bytes

Contents

module Friendly
  class Memcached
    attr_reader :cache

    def initialize(cache)
      @cache = cache
    end

    def set(key, value)
      @cache.set(key, value)
    end

    def get(key)
      @cache.get(key)
    rescue ::Memcached::NotFound
      if block_given?
        miss(key) { yield }
      end
    end

    def multiget(keys)
      return {} if keys.empty?

      hits         = @cache.get(keys)
      missing_keys = keys - hits.keys

      if !missing_keys.empty? && block_given?
        missing_keys.each do |missing_key|
          hits.merge!(missing_key => miss(missing_key) { yield(missing_key) })
        end
      end

      hits
    end

    def delete(key)
      cache.delete(key)
    rescue ::Memcached::NotFound
    end

    protected
      def miss(key)
        value = yield
        @cache.set(key, value)
        value
      end
  end
end

Version data entries

28 entries across 28 versions & 7 rubygems

Version Path
ihoka-friendly-0.8.0.pre lib/friendly/memcached.rb
ihoka-friendly-0.7.1.2 lib/friendly/memcached.rb
ihoka-friendly-0.7.1.1 lib/friendly/memcached.rb
ihoka-friendly-0.7.1 lib/friendly/memcached.rb
ihoka-friendly-0.7.0 lib/friendly/memcached.rb
ihoka-friendly-0.6.3 lib/friendly/memcached.rb
ihoka-friendly-0.6.2 lib/friendly/memcached.rb
friendly-0.6.0 lib/friendly/memcached.rb
honkster-friendly-0.5.3 lib/friendly/memcached.rb
honkster-friendly-0.5.2 lib/friendly/memcached.rb
honkster-friendly-0.5.1 lib/friendly/memcached.rb
wayne-friendly-0.5.1 lib/friendly/memcached.rb
wego-friendly-0.5.1 lib/friendly/memcached.rb
arunthampi-friendly-0.5.1 lib/friendly/memcached.rb
friendly_postgres-0.5.1 lib/friendly/memcached.rb
friendly-0.5.1 lib/friendly/memcached.rb
friendly-0.5.0 lib/friendly/memcached.rb
friendly_postgres-0.4.5 lib/friendly/memcached.rb
friendly-0.4.5 lib/friendly/memcached.rb
friendly-0.4.4 lib/friendly/memcached.rb