Class: Familia::HashKey

Inherits:
RedisObject show all
Defined in:
lib/familia/redisobject.rb

Instance Attribute Summary

Attributes inherited from RedisObject

#cache, #name, #parent, #redis

Instance Method Summary collapse

Methods inherited from RedisObject

#class?, #clear_cache, #db, #dump_method, #echo, #exists?, #expire, #expireat, #from_redis, inherited, #initialize, #load_method, #move, #multi_from_redis, #parent?, #persist, #qstamp, #realttl, #rediskey, register, registration, #rename, #renamenx, #to_redis, #ttl, #type, #update_expiration

Constructor Details

This class inherits a constructor from Familia::RedisObject

Instance Method Details

#[](n) ⇒ Object Also known as: get



830
831
832
# File 'lib/familia/redisobject.rb', line 830

def [] n
  from_redis redis.hget(rediskey, n)
end

#[]=(n, v) ⇒ Object Also known as: put, store



817
818
819
820
821
822
823
824
825
826
# File 'lib/familia/redisobject.rb', line 817

def []= n, v
  ret = redis.hset rediskey, n, to_redis(v)
  update_expiration
  ret
rescue TypeError => e
  echo :hset, caller[0] if Familia.debug
  klass = v.class
  msg = "Cannot store #{n} => #{v.inspect} (#{klass}) in #{rediskey}"
  raise e.class, msg
end

#allObject Also known as: to_hash, clone



854
855
856
857
# File 'lib/familia/redisobject.rb', line 854

def all
  # TODO: from_redis
  redis.hgetall rediskey
end

#decrement(n, by = 1) ⇒ Object Also known as: decr, decrby



880
881
882
# File 'lib/familia/redisobject.rb', line 880

def decrement n, by=1
  increment n, -by
end

#delete(n) ⇒ Object Also known as: remove, rem, del



867
868
869
# File 'lib/familia/redisobject.rb', line 867

def delete n
  redis.hdel rediskey, n
end

#empty?Boolean

Returns:

  • (Boolean)


813
814
815
# File 'lib/familia/redisobject.rb', line 813

def empty?
  size == 0
end

#fetch(n, default = nil) ⇒ Object



835
836
837
838
839
840
841
842
843
# File 'lib/familia/redisobject.rb', line 835

def fetch n, default=nil
  ret = self[n]
  if ret.nil?
    raise IndexError.new("No such index for: #{n}") if default.nil?
    default
  else
    ret
  end
end

#has_key?(n) ⇒ Boolean Also known as: include?, member?

Returns:

  • (Boolean)


861
862
863
# File 'lib/familia/redisobject.rb', line 861

def has_key? n
  redis.hexists rediskey, n
end

#increment(n, by = 1) ⇒ Object Also known as: incr, incrby



874
875
876
# File 'lib/familia/redisobject.rb', line 874

def increment n, by=1
  redis.hincrby(rediskey, n, by).to_i
end

#keysObject



845
846
847
# File 'lib/familia/redisobject.rb', line 845

def keys
  redis.hkeys rediskey
end

#sizeObject Also known as: length



808
809
810
# File 'lib/familia/redisobject.rb', line 808

def size
  redis.hlen rediskey
end

#update(h = {}) ⇒ Object Also known as: merge!

Raises:

  • (ArgumentError)


886
887
888
889
890
891
892
# File 'lib/familia/redisobject.rb', line 886

def update h={}
  raise ArgumentError, "Argument to bulk_set must be a hash" unless Hash === h
  data = h.inject([]){ |ret,pair| ret << [pair[0], to_redis(pair[1])] }.flatten
  ret = redis.hmset(rediskey, *data)
  update_expiration
  ret
end

#valuesObject



849
850
851
852
# File 'lib/familia/redisobject.rb', line 849

def values
  el = redis.hvals(rediskey)
  multi_from_redis *el
end

#values_at(*names) ⇒ Object



895
896
897
898
# File 'lib/familia/redisobject.rb', line 895

def values_at *names
  el = redis.hmget(rediskey, *names.flatten.compact)
  multi_from_redis *el
end