Class: Deferrer::Queue

Inherits:
Object
  • Object
show all
Defined in:
lib/deferrer/queue.rb

Constant Summary collapse

LIST_KEY =
'deferred_list'
ITEM_KEY_PREFIX =
'deferred'

Class Method Summary collapse

Class Method Details

.find(key) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/deferrer/queue.rb', line 27

def find(key)
  return nil unless key

  item = nil

  if json = redis.rpop(key)
    item = Item.from_json(json)
  end

  remove(key)

  item
end

.find_by_id(id) ⇒ Object



22
23
24
25
# File 'lib/deferrer/queue.rb', line 22

def find_by_id(id)
  return nil unless id
  find(item_key(id))
end

.pop(ignore_time = false) ⇒ Object



18
19
20
# File 'lib/deferrer/queue.rb', line 18

def pop(ignore_time = false)
  find(next_key(ignore_time))
end

.push(item, timestamp) ⇒ Object



7
8
9
10
11
12
13
14
15
16
# File 'lib/deferrer/queue.rb', line 7

def push(item, timestamp)
  key = item_key(item.id)
  count = redis.rpush(key, item.to_json)

  # set score only on first update
  if count == 1
    score = calculate_score(timestamp)
    redis.zadd(LIST_KEY, score, key)
  end
end