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.



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

def initialize(redis)
  @redis = redis
end

Instance Method Details

#everything_in_queue(queue) ⇒ Object



154
155
156
# File 'lib/resque/data_store.rb', line 154

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



169
170
171
172
173
174
175
# File 'lib/resque/data_store.rb', line 169

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.


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

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



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

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

#push_to_queue(queue, encoded_item) ⇒ Object



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

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



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

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

#queue_size(queue) ⇒ Object

Get the number of items in the queue



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

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



159
160
161
# File 'lib/resque/data_store.rb', line 159

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

#remove_queue(queue) ⇒ Object



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

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



164
165
166
# File 'lib/resque/data_store.rb', line 164

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