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.



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

def initialize(redis)
  @redis = redis
end

Instance Method Details

#everything_in_queue(queue) ⇒ Object



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

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



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

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.


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

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



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

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

#push_to_queue(queue, encoded_item) ⇒ Object



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

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



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

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

#queue_size(queue) ⇒ Object

Get the number of items in the queue



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

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



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

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

#remove_queue(queue) ⇒ Object



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

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



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

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