Module: FreshRedis::Hash

Included in:
FreshRedis
Defined in:
lib/fresh_redis/hash.rb

Instance Method Summary collapse

Instance Method Details

#fhdel(key, hash_key, options = {}) ⇒ Object



41
42
43
44
45
46
47
48
49
# File 'lib/fresh_redis/hash.rb', line 41

def fhdel(key, hash_key, options={})
  key = build_key(key, options)

  bucket_values = @redis.pipelined {
    key.timestamp_buckets.each do |bucket_key|
      @redis.hdel(bucket_key, hash_key)
    end
  }
end

#fhget(key, hash_key, options = {}) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/fresh_redis/hash.rb', line 12

def fhget(key, hash_key, options={})
  key = build_key(key, options)

  bucket_values = @redis.pipelined {
    key.timestamp_buckets.reverse.each do |bucket_key|
      @redis.hget(bucket_key, hash_key)
    end
  }

  # find the first non-nil value
  bucket_values.find{|e| e } 
end

#fhgetall(key, options = {}) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/fresh_redis/hash.rb', line 25

def fhgetall(key, options={})
  key = build_key(key, options)

  bucket_values = @redis.pipelined {
    key.timestamp_buckets.each do |bucket_key|
      @redis.hgetall(bucket_key)
    end
  }

  merged_values = bucket_values.inject({}){ |acc, bucket_hash|
    acc.merge(bucket_hash)
  }

  merged_values.reject{ |key, value| !value }
end

#fhset(key, hash_key, value, options = {}) ⇒ Object



4
5
6
7
8
9
10
# File 'lib/fresh_redis/hash.rb', line 4

def fhset(key, hash_key, value, options={})
  key = build_key(key, options)
  @redis.multi do
    @redis.hset(key.redis_key, hash_key, value)
    @redis.expire(key.redis_key, key.freshness)
  end
end