Class: Redis::Unique::Queue
- Inherits:
-
Object
- Object
- Redis::Unique::Queue
- Defined in:
- lib/redis/unique/queue.rb
Constant Summary collapse
- VERSION =
"0.0.4"
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
Instance Method Summary collapse
- #all ⇒ Object
- #clear ⇒ Object
- #front ⇒ Object
- #include?(data) ⇒ Boolean
-
#initialize(name, redis_or_options = {}) ⇒ Queue
constructor
A new instance of Queue.
- #peek(index, amount = 1) ⇒ Object
- #pop ⇒ Object
-
#push(data, delay = 0) ⇒ Object
Add an item to the queue.
- #remove(data) ⇒ Object
- #size ⇒ Object
Constructor Details
#initialize(name, redis_or_options = {}) ⇒ Queue
Returns a new instance of Queue.
10 11 12 13 14 15 16 17 |
# File 'lib/redis/unique/queue.rb', line 10 def initialize(name, = {}) @name = name @redis = if .kind_of? Redis elsif .kind_of? Hash Redis.new end end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
6 7 8 |
# File 'lib/redis/unique/queue.rb', line 6 def name @name end |
Instance Method Details
#all ⇒ Object
44 45 46 |
# File 'lib/redis/unique/queue.rb', line 44 def all peek 0, size end |
#clear ⇒ Object
56 57 58 |
# File 'lib/redis/unique/queue.rb', line 56 def clear @redis.del name end |
#front ⇒ Object
32 33 34 |
# File 'lib/redis/unique/queue.rb', line 32 def front @redis.zrange(name, 0, 0).first end |
#include?(data) ⇒ Boolean
52 53 54 |
# File 'lib/redis/unique/queue.rb', line 52 def include? data !@redis.zscore(name, data).nil? end |
#peek(index, amount = 1) ⇒ Object
48 49 50 |
# File 'lib/redis/unique/queue.rb', line 48 def peek index, amount=1 @redis.zrange name, index, index + amount - 1 end |
#pop ⇒ Object
25 26 27 28 29 30 |
# File 'lib/redis/unique/queue.rb', line 25 def pop begin success, result = attempt_atomic_pop end while !success && result result end |
#push(data, delay = 0) ⇒ Object
Add an item to the queue. delay is in seconds.
20 21 22 23 |
# File 'lib/redis/unique/queue.rb', line 20 def push data, delay=0 score = Time.now.to_f + delay @redis.zadd(name, score, data) end |
#remove(data) ⇒ Object
36 37 38 |
# File 'lib/redis/unique/queue.rb', line 36 def remove data @redis.zrem name, data end |
#size ⇒ Object
40 41 42 |
# File 'lib/redis/unique/queue.rb', line 40 def size @redis.zcard name end |