84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
比如redis哈。 你提交一个bgrewriteaof。会立马得到一个回复。即程序与redis的连接结束。redis自己在默默的执行操作。
mongodb有木有类似的命令参数?比如我remove掉一批object。尼玛等了30多分钟……= =。难道就木有 一个 db.collection.remove({param},{background:true})?= =
光阴似箭催人老,日月如移越少年。
請參閱這裡:http://docs.mongodb.org/manual/reference/write-concern/
MongoDB 預設w=1。你可以传个w=0告訴 MongoDB 你不想等它寫作業完成。
w=1
w=0
這個叫做「非同步返回」。有些語言(例如java)有mongodb的非同步驅動,你可以gogole一下 mongodb async + 你用的語言。
目前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
請參閱這裡:http://docs.mongodb.org/manual/reference/write-concern/
MongoDB 預設
w=1
。你可以传个w=0
告訴 MongoDB 你不想等它寫作業完成。這個叫做「非同步返回」。有些語言(例如java)有mongodb的非同步驅動,你可以gogole一下 mongodb async + 你用的語言。
目前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