Class: Resque::DataStore::QueueAccess

Inherits:
Object
  • Object
show all
Defined in:
lib/resque/data_store.rb

Instance Method Summary collapse

Constructor Details

#initialize(redis) ⇒ QueueAccess

Returns a new instance of QueueAccess.



98
99
100
# File 'lib/resque/data_store.rb', line 98

def initialize(redis)
  @redis = redis
end

Instance Method Details

#everything_in_queue(queue) ⇒ Object



137
138
139
# File 'lib/resque/data_store.rb', line 137

def everything_in_queue(queue)
  @redis.lrange(redis_key_for_queue(queue), 0, -1)
end

#list_range(key, start = 0, count = 1) ⇒ Object

Private: do not call



152
153
154
155
156
157
158
# File 'lib/resque/data_store.rb', line 152

def list_range(key, start = 0, count = 1)
  if count == 1
    @redis.lindex(key, start)
  else
    Array(@redis.lrange(key, start, start+count-1))
  end
end

#peek_in_queue(queue, start = 0, count = 1) ⇒ Object

Examine items in the queue.

NOTE: if count is 1, you will get back an object, otherwise you will

get an Array.  I'm not making this up.


122
123
124
# File 'lib/resque/data_store.rb', line 122

def peek_in_queue(queue, start = 0, count = 1)
  list_range(redis_key_for_queue(queue), start, count)
end

#pop_from_queue(queue) ⇒ Object

Pop whatever is on queue



109
110
111
# File 'lib/resque/data_store.rb', line 109

def pop_from_queue(queue)
  @redis.lpop(redis_key_for_queue(queue))
end

#push_to_queue(queue, encoded_item) ⇒ Object



101
102
103
104
105
106
# File 'lib/resque/data_store.rb', line 101

def push_to_queue(queue,encoded_item)
  @redis.pipelined do
    watch_queue(queue)
    @redis.rpush redis_key_for_queue(queue), encoded_item
  end
end

#queue_namesObject



126
127
128
# File 'lib/resque/data_store.rb', line 126

def queue_names
  Array(@redis.smembers(:queues))
end

#queue_size(queue) ⇒ Object

Get the number of items in the queue



114
115
116
# File 'lib/resque/data_store.rb', line 114

def queue_size(queue)
  @redis.llen(redis_key_for_queue(queue)).to_i
end

#remove_from_queue(queue, data) ⇒ Object

Remove data from the queue, if it’s there, returning the number of removed elements



142
143
144
# File 'lib/resque/data_store.rb', line 142

def remove_from_queue(queue,data)
  @redis.lrem(redis_key_for_queue(queue), 0, data)
end

#remove_queue(queue) ⇒ Object



130
131
132
133
134
135
# File 'lib/resque/data_store.rb', line 130

def remove_queue(queue)
  @redis.pipelined do
    @redis.srem(:queues, queue.to_s)
    @redis.del(redis_key_for_queue(queue))
  end
end

#watch_queue(queue) ⇒ Object

Private: do not call



147
148
149
# File 'lib/resque/data_store.rb', line 147

def watch_queue(queue)
  @redis.sadd(:queues, queue.to_s)
end