Class: Ablab::Store::Redis

Inherits:
Object
  • Object
show all
Defined in:
lib/ablab/store/redis.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(opts = {}) ⇒ Redis

Returns a new instance of Redis.



8
9
10
11
# File 'lib/ablab/store/redis.rb', line 8

def initialize(opts = {})
  @key_prefix = opts[:key_prefix] || 'ablab'
  @redis = ::Redis.new(opts)
end

Instance Attribute Details

#redisObject (readonly)

Returns the value of attribute redis.



6
7
8
# File 'lib/ablab/store/redis.rb', line 6

def redis
  @redis
end

Instance Method Details

#conversions(experiment, bucket) ⇒ Object



33
34
35
# File 'lib/ablab/store/redis.rb', line 33

def conversions(experiment, bucket)
  (redis.pfcount(key(:conversions, experiment, bucket)) || 0).to_i
end

#counts(experiment, bucket) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/ablab/store/redis.rb', line 37

def counts(experiment, bucket)
  v, s, x, c = nil, nil, nil, nil
  redis.multi do
    v = redis.get(key(:views, experiment, bucket))
    s = redis.pfcount(key(:sessions, experiment, bucket))
    x = redis.get(key(:successes, experiment, bucket))
    c = redis.pfcount(key(:conversions, experiment, bucket))
  end
  {
    views:       (v.value || 0).to_i,
    sessions:    (s.value || 0).to_i,
    successes:   (x.value || 0).to_i,
    conversions: (c.value || 0).to_i
  }
end

#sessions(experiment, bucket) ⇒ Object



25
26
27
# File 'lib/ablab/store/redis.rb', line 25

def sessions(experiment, bucket)
  (redis.pfcount(key(:sessions, experiment, bucket)) || 0).to_i
end

#successes(experiment, bucket) ⇒ Object



29
30
31
# File 'lib/ablab/store/redis.rb', line 29

def successes(experiment, bucket)
  (redis.get(key(:successes, experiment, bucket)) || 0).to_i
end

#track_success!(experiment, bucket, session_id) ⇒ Object



17
18
19
# File 'lib/ablab/store/redis.rb', line 17

def track_success!(experiment, bucket, session_id)
  track(experiment, bucket, session_id, :successes, :conversions)
end

#track_view!(experiment, bucket, session_id) ⇒ Object



13
14
15
# File 'lib/ablab/store/redis.rb', line 13

def track_view!(experiment, bucket, session_id)
  track(experiment, bucket, session_id, :views, :sessions)
end

#views(experiment, bucket) ⇒ Object



21
22
23
# File 'lib/ablab/store/redis.rb', line 21

def views(experiment, bucket)
  (redis.get(key(:views, experiment, bucket)) || 0).to_i
end