Professional Documents
Culture Documents
Redis at Superfeedr: in Production @superfeedr // @julien51
Redis at Superfeedr: in Production @superfeedr // @julien51
Redis at Superfeedr: in Production @superfeedr // @julien51
In production
@superfeedr // @julien51
Superfeedr What?
• Requirements
• A datastructure that can be “rotated”
• Dealing with priorities
• Storing some “basic” stuff
Redis
• List rpoplupsuh(“ring”, “ring”)
• Key/Value in Json
• Async
• Pipelining to avoid network latencies
• Version
• redis_version:1.2.5
• arch_bits:32
• multiplexing_api:epoll
Algorithm
loop do
ids = $redis.rpoplpush("ring", "ring", 50)
items = $redis.get(ids)
ids.each do |item|
if item.time_to_fetch < now()
fetch(item)
item.time_to_fetch = later()
else
# skip
end
end
end
Cleaning the Ring