我想知道是否可以使用 mongodb 和 ruby(mongoid) 创建一个 FIFO 队列。
我正在尝试使用上限集合,但我看不到如何弹出队列。集合中似乎没有方法可以做到这一点。
我现在正在做的是:
$fifo = Mongo::Connection.new.db("fifo")
queue = "#{queue_name}_#{queue_type}"
unless $fifo[queue].find.present?
$fifo.command(create: queue, capped: true, size: 10000000, max: 1000)
end
$fifo[queue].insert(url: "http://www.example.com/unique001")
$fifo[queue].insert(url: "http://www.example.com/unique002")
$fifo[queue].insert(url: "http://www.example.com/unique003")
这给了我一个看起来像的上限集合(来自控制台)
> db.test001_high.find()
{ "_id" : ObjectId("503c4714236f440e9c000001"), "url" : "http://www.example.com/unique001" }
{ "_id" : ObjectId("503c4714236f440e9c000002"), "url" : "http://www.example.com/unique002" }
{ "_id" : ObjectId("503c4714236f440e9c000003"), "url" : "http://www.example.com/unique003" }
我想知道的是,在 ruby 中有没有办法在这个集合中阻止流行?我必须说我对 mongodb 并不是很熟悉,我只是想像在 redis 中那样创建一个 fifo 队列。所以也许我以错误的方式处理这个问题。