class ICFS::ConfigRedis

Implement Config with a Redis cache

Public Class Methods

new(redis, base, opts={}) click to toggle source

New instance

@param redis [Redis] The redis client @param base [Config] The base Config store @param opts [Hash] Options @option opts [String] :prefix Prefix for Redis key @option opts [Integer] :expires Expiration time in seconds

Calls superclass method ICFS::Config::new
# File lib/icfs/config_redis.rb, line 33
def initialize(redis, base, opts={})
  super(base.setup)
  @redis = redis
  @base = base
  @pre = opts[:prefix] || ''
  @exp = opts[:expires] || 1*60*60 # 1 hour default
end

Public Instance Methods

load(unam) click to toggle source

(see Config#load)

# File lib/icfs/config_redis.rb, line 45
def load(unam)
  Items.validate(unam, 'User/Role/Group name', Items::FieldUsergrp)
  @unam = unam.dup
  key = _key(unam)

  # try cache
  json = @redis.get(key)
  if json
    _parse(json)
    return true
  end

  # get base object
  succ = @base.load(unam)
  @data = @base.data
  return succ
end
save() click to toggle source

(see Config#save)

# File lib/icfs/config_redis.rb, line 67
def save()
  raise(RuntimeError, 'Save requires a user name') if !@unam
  json = _generate()
  @redis.del(_key(@unam))
  @base.data = @data
  @base.save
end