Parent

Included Modules

Class Index [+]

Quicksearch

Ramaze::Cache::Redis

The Redis cache is a cache driver for Redis (redis.io/). Redis is a key/value store similar to Memcached but with the ability to flush data to a file among various other features.

The usage of this cache is very similar to the Memcache driver. You load it by simply specifying the class:

    Ramaze::Cache.options.session = Ramaze::Cache::Redis

If you want to specify custom options you can do so by calling {.using} on the class:

    Ramaze::Cache.options.session = Ramaze::Cache::Redis.using(...)

@example Using a custom Redis host

 Ramaze::Cache.options.names.push(:redis)
 Ramaze::Cache.options.redis = Ramaze::Cache::Redis.using(
   :host => '123.124.125.126',
   :port => 6478
 )

@author Michael Fellinger @since 09-10-2011

Attributes

options[RW]

Hash containing all the default options merged with the user specified ones.

options[RW]

Public Class Methods

new(options = {}) click to toggle source

Creates a new instance of the cache and merges the options if they haven’t already been set.

@author Michael Fellinger @param [Hash] options A hash with custom options. See

 Ramaze::Cache::Redis.using() and the trait :default for more
 information.
    # File lib/ramaze/cache/redis.rb, line 83
83:       def initialize(options = {})
84:         self.class.options ||=
85:           Ramaze::Cache::Redis.trait[:default].merge(options)
86: 
87:         @options = options.merge(self.class.options)
88:       end
using(options = {}) click to toggle source

Creates a new instance of the cache class and merges the default options with the custom ones.

Using this method you can specify custom options for various caches. For example, the Redis cache for your sessions could be located at server #1 while a custom cache is located on server #2.

@author Yorick Peterse @since 09-10-2011 @param [Hash] options A hash containing custom options. @option options [Fixnum] :expires_in The default time after which a

 key should expire.

@option options [String] :host The hostname of the machine on which

 Redis is running.

@option options [Fixnum] :port The port number to connect to.

    # File lib/ramaze/cache/redis.rb, line 68
68:         def using(options = {})
69:           merged = Ramaze::Cache::Redis.trait[:default].merge(options)
70:           Class.new(self) { @options = merged }
71:         end

Public Instance Methods

cache_clear() click to toggle source

Clears the entire cache.

@author Michael Fellinger @since 09-10-2011

     # File lib/ramaze/cache/redis.rb, line 117
117:       def cache_clear
118:         @client.flushall
119:       end
cache_delete(*keys) click to toggle source

Removes a number of keys from the cache.

@author Michael Fellinger @param [Array] *keys An array of key names to remove.

     # File lib/ramaze/cache/redis.rb, line 127
127:       def cache_delete(*keys)
128:         @client.del(*keys.map{|key| namespaced_key(key) })
129:       end
cache_fetch(key, default = nil) click to toggle source

Retrieves the value of the given key. If no value could be retrieved the default value (set to nil by default) will be returned instead.

@author Michael Fellinger @param [String] key The name of the key to retrieve. @param [Mixed] default The default value. @return [Mixed]

     # File lib/ramaze/cache/redis.rb, line 140
140:       def cache_fetch(key, default = nil)
141:         value = @client.get(namespaced_key(key))
142:         value.nil? ? default : ::Marshal.load(value)
143:       end
cache_setup(hostname, username, appname, cachename) click to toggle source

Prepares the cache by setting up the namespace and loading Redis.

@author Michael Fellinger @since 09-10-2011 @param [String] hostname The host of the machine that’s running the

 Ramaze application.

@param [String] username The name of the user that’s running the

 application.

@param [String] appname The name of the application (:pristine by

 default).

@param [String] cachename The namespace to use for this cache instance.

     # File lib/ramaze/cache/redis.rb, line 103
103:       def cache_setup(hostname, username, appname, cachename)
104:         options[:namespace] = [
105:           'ramaze', hostname, username, appname, cachename
106:         ].compact.join(':')
107: 
108:         @client = ::Redis.new(options)
109:       end
cache_store(key, value, ttl = nil, options = {}) click to toggle source

Stores a new value under the given key.

@author Michael Fellinger @param [String] key The name of the key to store. @param [Mixed] value The value of the key. @param [Fixnum] ttl The Time To Live of the key. @param [Hash] options A hash containing key specific options. @option options :expires_in The time after which the key should expire.

     # File lib/ramaze/cache/redis.rb, line 155
155:       def cache_store(key, value, ttl = nil, options = {})
156:         ttl = options[:ttl] || @options[:expires_in]
157: 
158:         @client.setex(namespaced_key(key), ttl, ::Marshal.dump(value))
159: 
160:         return value
161:       end
namespaced_key(key) click to toggle source
     # File lib/ramaze/cache/redis.rb, line 163
163:       def namespaced_key(key)
164:         [options[:namespace], key].join(':')
165:       end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.