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.



107
108
109
# File 'lib/resque/data_store.rb', line 107

def initialize(redis)
  @redis = redis
end

Instance Method Details

#everything_in_queue(queue) ⇒ Object



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

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



161
162
163
164
165
166
167
# File 'lib/resque/data_store.rb', line 161

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.


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

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



118
119
120
# File 'lib/resque/data_store.rb', line 118

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

#push_to_queue(queue, encoded_item) ⇒ Object



110
111
112
113
114
115
# File 'lib/resque/data_store.rb', line 110

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



135
136
137
# File 'lib/resque/data_store.rb', line 135

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

#queue_size(queue) ⇒ Object

Get the number of items in the queue



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

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



151
152
153
# File 'lib/resque/data_store.rb', line 151

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

#remove_queue(queue) ⇒ Object



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

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



156
157
158
# File 'lib/resque/data_store.rb', line 156

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