Class: Ablab::Store::Redis
- Inherits:
-
Object
- Object
- Ablab::Store::Redis
- Defined in:
- lib/ablab/store/redis.rb
Instance Attribute Summary collapse
-
#redis ⇒ Object
readonly
Returns the value of attribute redis.
Instance Method Summary collapse
- #conversions(experiment, bucket) ⇒ Object
- #counts(experiment, bucket) ⇒ Object
-
#initialize(opts = {}) ⇒ Redis
constructor
A new instance of Redis.
- #sessions(experiment, bucket) ⇒ Object
- #successes(experiment, bucket) ⇒ Object
- #track_success!(experiment, bucket, session_id) ⇒ Object
- #track_view!(experiment, bucket, session_id) ⇒ Object
- #views(experiment, bucket) ⇒ Object
Constructor Details
#initialize(opts = {}) ⇒ 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
#redis ⇒ Object (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
39 40 41 |
# File 'lib/ablab/store/redis.rb', line 39 def conversions(experiment, bucket) (redis.pfcount(key(:conversions, experiment, bucket)) || 0).to_i end |
#counts(experiment, bucket) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/ablab/store/redis.rb', line 43 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
31 32 33 |
# File 'lib/ablab/store/redis.rb', line 31 def sessions(experiment, bucket) (redis.pfcount(key(:sessions, experiment, bucket)) || 0).to_i end |
#successes(experiment, bucket) ⇒ Object
35 36 37 |
# File 'lib/ablab/store/redis.rb', line 35 def successes(experiment, bucket) (redis.get(key(:successes, experiment, bucket)) || 0).to_i end |
#track_success!(experiment, bucket, session_id) ⇒ Object
20 21 22 23 24 25 |
# File 'lib/ablab/store/redis.rb', line 20 def track_success!(experiment, bucket, session_id) redis.pipelined do redis.incr(key(:successes, experiment, bucket)) redis.pfadd(key(:conversions, experiment, bucket), session_id) end end |
#track_view!(experiment, bucket, session_id) ⇒ Object
13 14 15 16 17 18 |
# File 'lib/ablab/store/redis.rb', line 13 def track_view!(experiment, bucket, session_id) redis.pipelined do redis.incr(key(:views, experiment, bucket)) redis.pfadd(key(:sessions, experiment, bucket), session_id) end end |
#views(experiment, bucket) ⇒ Object
27 28 29 |
# File 'lib/ablab/store/redis.rb', line 27 def views(experiment, bucket) (redis.get(key(:views, experiment, bucket)) || 0).to_i end |