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
Returns a new instance of Redis.
8 9 10 11 12 |
# File 'lib/ablab/store/redis.rb', line 8 def initialize(opts = {}) @key_prefix = opts[:key_prefix] || 'ablab:1' @redis = ::Redis.new(opts) @session_duration = opts[:session_duration] || (60 * 30) 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 42 43 44 45 46 |
# File 'lib/ablab/store/redis.rb', line 39 def conversions(experiment, bucket) c, z = nil, nil redis.multi do c = redis.zcard(key(:conversions, experiment, bucket)) z = redis.get(key(:'conversions:spool', experiment, bucket)) end (c.value || 0).to_i + (z.value || 0).to_i end |
#counts(experiment, bucket) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/ablab/store/redis.rb', line 48 def counts(experiment, bucket) v, s, k, x, c, z = nil, nil, nil, nil, nil, nil redis.multi do v = redis.get(key(:views, experiment, bucket)) s = redis.zcard(key(:sessions, experiment, bucket)) k = redis.get(key(:'sessions:spool', experiment, bucket)) x = redis.get(key(:successes, experiment, bucket)) c = redis.zcard(key(:conversions, experiment, bucket)) z = redis.get(key(:'conversions:spool', experiment, bucket)) end { views: (v.value || 0).to_i, sessions: (s.value || 0).to_i + (k.value || 0).to_i, successes: (x.value || 0).to_i, conversions: (c.value || 0).to_i + (z.value || 0).to_i } end |
#sessions(experiment, bucket) ⇒ Object
26 27 28 29 30 31 32 33 |
# File 'lib/ablab/store/redis.rb', line 26 def sessions(experiment, bucket) s, z = nil, nil redis.multi do s = redis.zcard(key(:sessions, experiment, bucket)) z = redis.get(key(:'sessions:spool', experiment, bucket)) end (s.value || 0).to_i + (z.value || 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
18 19 20 |
# File 'lib/ablab/store/redis.rb', line 18 def track_success!(experiment, bucket, session_id) track(experiment, bucket, session_id, :successes, :conversions) end |
#track_view!(experiment, bucket, session_id) ⇒ Object
14 15 16 |
# File 'lib/ablab/store/redis.rb', line 14 def track_view!(experiment, bucket, session_id) track(experiment, bucket, session_id, :views, :sessions) end |
#views(experiment, bucket) ⇒ Object
22 23 24 |
# File 'lib/ablab/store/redis.rb', line 22 def views(experiment, bucket) (redis.get(key(:views, experiment, bucket)) || 0).to_i end |