Sha256: 0d6ce3ad03dcaed80eefe75bf297dcebbddde71ef609df76952e05e244437e64

Contents?: true

Size: 940 Bytes

Versions: 6

Compression:

Stored size: 940 Bytes

Contents

require 'memcached'
module Waves
  module Caches
    class Memcached < Simple

      def initialize( args )
        raise ArgumentError, ":servers is nil" if args[ :servers ].nil?
        @cache = ::Memcached.new( args[ :servers ], args[ :options ] || {} )
      end

      def store( key,value, ttl = 0, marshal = true )
        cache = @cache.clone;  cache.add( key.to_s, value, ttl, marshal );  cache.destroy
      end

      def fetch( key )
        cache = @cache.clone;  cache.get( key.to_s );  cache.destroy
      rescue ::Memcached::NotFound => e
        nil
      end

      def delete( key )
        cache = @cache.clone; cache.delete( key.to_s );  cache.destroy
      end

      def clear
        cache = @cache.clone;  cache.flush;  cache.destroy
      end

    end
    
    class SynchronizedMemcached < Synchronized
      
      def initialize( args )
        super( Memcached.new( args ) )
      end
      
    end

  end
end

Version data entries

6 entries across 6 versions & 4 rubygems

Version Path
dyoder-waves-0.8.0 lib/caches/memcached.rb
waves-edge-2009.03.10.13.14 lib/caches/memcached.rb
waves-stable-2009.3.10 lib/caches/memcached.rb
waves-0.8.1 lib/caches/memcached.rb
waves-0.8.0 lib/caches/memcached.rb
waves-0.8.2 lib/caches/memcached.rb