Sha256: e384956386d99616ac5b8e25bf382425b17f188b32543769e040cb4f37b7a47d

Contents?: true

Size: 1.86 KB

Versions: 15

Compression:

Stored size: 1.86 KB

Contents

module Internals

  module Index

    class Redis

      # Redis Backend Accessor.
      #
      # Provides necessary helper methods for its
      # subclasses.
      # Not directly useable, as it does not provide
      # dump/load methods.
      #
      class Basic

        attr_reader :namespace, :backend

        # An index cache takes a path, without file extension,
        # which will be provided by the subclasses.
        #
        def initialize namespace
          @namespace = namespace

          # TODO Turn this inside out such that people can pass in
          # their own Redis instance.
          #
          # TODO Make the :db a real option.
          #
          @backend = ::Redis.new :db => 15
        end

        # Does nothing.
        #
        def load
          # Nothing.
        end
        # We do not use Redis to retrieve data.
        #
        def retrieve
          # Nothing.
        end

        # Redis does not backup.
        #
        def backup
          # Nothing.
        end

        # Deletes the Redis index namespace.
        #
        def delete
          # Not implemented here.
          # Note: backend.flushdb might be the way to go,
          #       but since we cannot delete by key pattern,
          #       we don't do anything.
        end

        # Checks.
        #

        # Is this cache suspiciously small?
        #
        def cache_small?
          size < 1
        end
        # Is the cache ok?
        #
        # A small cache is still ok.
        #
        def cache_ok?
          size > 0
        end
        # Extracts the size of the file in Bytes.
        #
        # Note: This is a very forgiving implementation.
        #       But as long as Redis does not implement
        #       DBSIZE KEYPATTERN, we are stuck with this.
        #
        def size
          backend.dbsize
        end

      end

    end

  end

end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
picky-2.5.2 lib/picky/internals/index/redis/basic.rb
picky-2.5.1 lib/picky/internals/index/redis/basic.rb
picky-2.5.0 lib/picky/internals/index/redis/basic.rb
picky-2.4.3 lib/picky/internals/index/redis/basic.rb
picky-2.4.2 lib/picky/internals/index/redis/basic.rb
picky-2.4.1 lib/picky/internals/index/redis/basic.rb
picky-2.4.0 lib/picky/internals/index/redis/basic.rb
picky-2.3.0 lib/picky/internals/index/redis/basic.rb
picky-2.2.1 lib/picky/internals/index/redis/basic.rb
picky-2.2.0 lib/picky/internals/index/redis/basic.rb
picky-2.1.2 lib/picky/internals/index/redis/basic.rb
picky-2.1.1 lib/picky/internals/index/redis/basic.rb
picky-2.1.0 lib/picky/internals/index/redis/basic.rb
picky-2.0.0 lib/picky/internals/index/redis/basic.rb
picky-2.0.0.pre3 lib/picky/internals/index/redis/basic.rb