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
|