搜尋

首頁  >  問答  >  主體

mongodb有没有后端执行的操作可以立马得到回馈的?

比如redis哈。 你提交一个bgrewriteaof。会立马得到一个回复。即程序与redis的连接结束。redis自己在默默的执行操作。

mongodb有木有类似的命令参数?比如我remove掉一批object。尼玛等了30多分钟……= =。难道就木有 一个 db.collection.remove({param},{background:true})?= =

大家讲道理大家讲道理2768 天前639

全部回覆(3)我來回復

  • 高洛峰

    高洛峰2017-04-21 11:20:58

    請參閱這裡:http://docs.mongodb.org/manual/reference/write-concern/

    MongoDB 預設 w=1。你可以传个 w=0 告訴 MongoDB 你不想等它寫作業完成。

    回覆
    0
  • PHPz

    PHPz2017-04-21 11:20:58

    這個叫做「非同步返回」。有些語言(例如java)有mongodb的非同步驅動,你可以gogole一下 mongodb async + 你用的語言。

    回覆
    0
  • 黄舟

    黄舟2017-04-21 11:20:58

    目前redis在使用上更多是傾向於記憶體資料庫,只是redis可以配置持久化策略,可以將記憶體中的資料持久化到硬碟,在下次重啟時能夠自動恢復。 bgrewriteaof只是redis採用AOF持久化策略時,提供的一個允許管理員手動觸發AOF重寫的命令,從Redis2.4開始,AOF重寫由Redis自動觸發。這樣的Redis伺服器主執行緒在每次接受操作指令時會將資料寫入記憶體的同時寫AOF,然後由Redis自動fsync到硬碟,不會造成使用者操作的阻塞。 See: Redis Persistence

    而mongodb的定位是一個Document based資料庫,且原生支援分散式架構。作為一個文件資料庫,持久化的保證是所有的資料必須寫到硬碟才算操作成功。分散式的架構為持久化操作帶來了更多的複雜性問題(保證多個伺服器之間的資料同步、分散式寫的策略等)。

    綜上所述,不要期待Redis提供的某一個功能,mongodb也提供,因為二者的關注點不同,redis更多關注的高性能的I/O,mongodb更多關注的是大量數據的存儲,同時兼顧性能

    從你的描述來看,請求mongodb的操作阻塞比較嚴重。建議結合你的需求,在請求mongodb操作的同時附上WriteConcern,定義你所能容忍的寫入操作策略。 See: WriteConcern

    回覆
    0
  • 取消回覆