Class: Frivol::Backend::Riak
- Inherits:
-
Object
- Object
- Frivol::Backend::Riak
- Defined in:
- lib/frivol/backend/riak.rb
Overview
Instance Method Summary collapse
- #connection ⇒ Object
- #decr(key, expiry = Frivol::NEVER_EXPIRE) ⇒ Object
- #decrby(key, amt, expiry = Frivol::NEVER_EXPIRE) ⇒ Object
- #del(key) ⇒ Object
- #delc(key) ⇒ Object
- #exists(key) ⇒ Object
- #existsc(key) ⇒ Object
-
#expire(key, ttl) ⇒ Object
Expiry/TTL.
-
#flushdb ⇒ Object
Connection.
-
#get(key, expiry = Frivol::NEVER_EXPIRE) ⇒ Object
Hashes.
-
#getc(key, expiry = Frivol::NEVER_EXPIRE) ⇒ Object
Counters.
- #incr(key, expiry = Frivol::NEVER_EXPIRE) ⇒ Object
- #incrby(key, amt, expiry = Frivol::NEVER_EXPIRE) ⇒ Object
-
#initialize(config) ⇒ Riak
constructor
:nodoc:.
- #set(key, val, expiry = Frivol::NEVER_EXPIRE) ⇒ Object
- #setc(key, val, expiry = Frivol::NEVER_EXPIRE) ⇒ Object
- #ttl(key) ⇒ Object
Constructor Details
#initialize(config) ⇒ Riak
:nodoc:
14 15 16 17 |
# File 'lib/frivol/backend/riak.rb', line 14 def initialize(config) @prefix = config.delete(:prefix) || '' @config = config end |
Instance Method Details
#connection ⇒ Object
147 148 149 150 151 152 153 154 |
# File 'lib/frivol/backend/riak.rb', line 147 def connection Thread.current[thread_key] ||= begin @objects_bucket = nil @counters_bucket = nil @expires_bucket = nil ::Riak::Client.new(@config) end end |
#decr(key, expiry = Frivol::NEVER_EXPIRE) ⇒ Object
101 102 103 104 105 106 |
# File 'lib/frivol/backend/riak.rb', line 101 def decr(key, expiry = Frivol::NEVER_EXPIRE) cnt = counters_bucket.counter(key) cnt.decrement expire(key, expiry) unless expiry == Frivol::NEVER_EXPIRE cnt.value end |
#decrby(key, amt, expiry = Frivol::NEVER_EXPIRE) ⇒ Object
115 116 117 118 119 120 |
# File 'lib/frivol/backend/riak.rb', line 115 def decrby(key, amt, expiry = Frivol::NEVER_EXPIRE) cnt = counters_bucket.counter(key) cnt.decrement(amt) expire(key, expiry) unless expiry == Frivol::NEVER_EXPIRE cnt.value end |
#del(key) ⇒ Object
39 40 41 42 |
# File 'lib/frivol/backend/riak.rb', line 39 def del(key) objects_bucket.delete(key) expires_bucket.delete(key) end |
#delc(key) ⇒ Object
76 77 78 79 |
# File 'lib/frivol/backend/riak.rb', line 76 def delc(key) counters_bucket.delete(key) expires_bucket.delete(key) end |
#exists(key) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/frivol/backend/riak.rb', line 44 def exists(key) exists = objects_bucket.exist?(key) if exists expires_in = ttl(key) if expires_in.nil? || expires_in > 0 true else objects_bucket.delete(key) false end end end |
#existsc(key) ⇒ Object
81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/frivol/backend/riak.rb', line 81 def existsc(key) exists = counters_bucket.exist?(key) if exists expires_in = ttl(key) if expires_in.nil? || expires_in > 0 true else counters_bucket.delete(key) false end end end |
#expire(key, ttl) ⇒ Object
Expiry/TTL
123 124 125 126 127 128 |
# File 'lib/frivol/backend/riak.rb', line 123 def expire(key, ttl) obj = expires_bucket.get_or_new(key) obj.raw_data = (Time.now.to_i + ttl).to_s obj.content_type = 'text/plain' obj.store end |
#flushdb ⇒ Object
Connection
141 142 143 144 145 |
# File 'lib/frivol/backend/riak.rb', line 141 def flushdb objects_bucket.keys.each { |k| objects_bucket.delete(k) } counters_bucket.keys.each { |k| counters_bucket.delete(k) } expires_bucket.keys.each { |k| expires_bucket.delete(k) } end |
#get(key, expiry = Frivol::NEVER_EXPIRE) ⇒ Object
Hashes
20 21 22 23 24 25 26 27 28 29 |
# File 'lib/frivol/backend/riak.rb', line 20 def get(key, expiry = Frivol::NEVER_EXPIRE) obj = objects_bucket.get_or_new(key) expires_in = ttl(key) if expires_in.nil? || expires_in > 0 obj.raw_data else obj.delete nil end end |
#getc(key, expiry = Frivol::NEVER_EXPIRE) ⇒ Object
Counters
58 59 60 61 62 63 64 65 66 67 |
# File 'lib/frivol/backend/riak.rb', line 58 def getc(key, expiry = Frivol::NEVER_EXPIRE) cnt = counters_bucket.counter(key) if existsc(key) expires_in = ttl(key) if expires_in.nil? || expires_in > 0 cnt ? cnt.value : nil else delc(key) nil end end |
#incr(key, expiry = Frivol::NEVER_EXPIRE) ⇒ Object
94 95 96 97 98 99 |
# File 'lib/frivol/backend/riak.rb', line 94 def incr(key, expiry = Frivol::NEVER_EXPIRE) cnt = counters_bucket.counter(key) cnt.increment expire(key, expiry) unless expiry == Frivol::NEVER_EXPIRE cnt.value end |
#incrby(key, amt, expiry = Frivol::NEVER_EXPIRE) ⇒ Object
108 109 110 111 112 113 |
# File 'lib/frivol/backend/riak.rb', line 108 def incrby(key, amt, expiry = Frivol::NEVER_EXPIRE) cnt = counters_bucket.counter(key) cnt.increment(amt) expire(key, expiry) unless expiry == Frivol::NEVER_EXPIRE cnt.value end |
#set(key, val, expiry = Frivol::NEVER_EXPIRE) ⇒ Object
31 32 33 34 35 36 37 |
# File 'lib/frivol/backend/riak.rb', line 31 def set(key, val, expiry = Frivol::NEVER_EXPIRE) obj = objects_bucket.get_or_new(key) obj.raw_data = val obj.content_type = 'text/plain' obj.store expire(key, expiry) unless expiry == Frivol::NEVER_EXPIRE end |
#setc(key, val, expiry = Frivol::NEVER_EXPIRE) ⇒ Object
69 70 71 72 73 74 |
# File 'lib/frivol/backend/riak.rb', line 69 def setc(key, val, expiry = Frivol::NEVER_EXPIRE) delc(key) cnt = counters_bucket.counter(key) cnt.increment(val) expire(key, expiry) unless expiry == Frivol::NEVER_EXPIRE end |
#ttl(key) ⇒ Object
130 131 132 133 134 135 136 137 138 |
# File 'lib/frivol/backend/riak.rb', line 130 def ttl(key) obj = expires_bucket.get_or_new(key) expiry = obj.raw_data.to_i if expiry == 0 nil else expiry - Time.now.to_i end end |