MongoDB Tailable Cursors 特性介绍

MongoDB 有一个叫 Tailable Cursors的特性,它类似于tail -f 命令,你在一个Capped Collection上面执行查询操作,当操作完成后,你可以不关闭返回的数据Cursor,并持续地从中读出新加入的数据。

这个特性可以用来干什么?我觉得最直接的一个用途就是用作消息队列了,利用此特性加上MongoDB 天然的Replication 机制,做一个分布式的队列系统貌似不是什么难事。

下面是PHP 的示例代码:

selectDB('my_db')
$coll = $db->selectCollection('my_collection');
$cursor = $coll->find()->tailable(true);
while (true) {
    if ($cursor->hasNext()) {
        $doc = $cursor->getNext();
        print_r($doc);
    } else {
        sleep(1);
    }
}

下面是Ruby 的示例代码:

db   = Mongo::Connection.new().db('my_db')
coll = db.collection('my_collection')
cursor = Mongo::Cursor.new(coll, :tailable => true)
loop do
  if doc = cursor.next_document
    puts doc
  else
    sleep 1
  end
end

原文链接:http://jwage.com/2011/03/16/mongodb-tailable-cursors/
官方介绍:http://www.mongodb.org/display/DOCS/Tailable+Cursors

anyShare据说看到好文章不转的人,服务器容易宕机!
          

无觅相关文章插件,快速提升流量