Class: Redis::Unique::Queue
- Inherits:
-
Object
- Object
- Redis::Unique::Queue
- Defined in:
- lib/redis/unique/queue.rb
Constant Summary collapse
- VERSION =
"0.0.8"
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
Instance Method Summary collapse
- #all ⇒ Object
- #clear ⇒ Object
- #expire(seconds) ⇒ 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
- #pop_all ⇒ Object
-
#push(data, delay = 0) ⇒ Object
Add an item to the queue.
- #remove(data) ⇒ Object
- #remove_item_by_index(index) ⇒ Object
- #size ⇒ Object
Constructor Details
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
55 56 57 |
# File 'lib/redis/unique/queue.rb', line 55 def all peek 0, size end |
#clear ⇒ Object
67 68 69 |
# File 'lib/redis/unique/queue.rb', line 67 def clear @redis.del name end |
#expire(seconds) ⇒ Object
71 72 73 |
# File 'lib/redis/unique/queue.rb', line 71 def expire seconds @redis.expire name, seconds end |
#front ⇒ Object
39 40 41 |
# File 'lib/redis/unique/queue.rb', line 39 def front @redis.zrange(name, 0, 0).first end |
#include?(data) ⇒ Boolean
63 64 65 |
# File 'lib/redis/unique/queue.rb', line 63 def include? data !@redis.zscore(name, data).nil? end |
#peek(index, amount = 1) ⇒ Object
59 60 61 |
# File 'lib/redis/unique/queue.rb', line 59 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 |
#pop_all ⇒ Object
32 33 34 35 36 37 |
# File 'lib/redis/unique/queue.rb', line 32 def pop_all begin success, result = attempt_atomic_pop_all 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
43 44 45 |
# File 'lib/redis/unique/queue.rb', line 43 def remove data @redis.zrem name, data end |
#remove_item_by_index(index) ⇒ Object
47 48 49 |
# File 'lib/redis/unique/queue.rb', line 47 def remove_item_by_index index @redis.zremrangebyrank name, index, index end |
#size ⇒ Object
51 52 53 |
# File 'lib/redis/unique/queue.rb', line 51 def size @redis.zcard name end |