mongodb有没有后端执行的操作可以立马得到回馈的?
大家讲道理
大家讲道理 2017-04-21 11:18:58
0
3
663

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

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

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(3)
小葫芦

参见这里: http://docs.mongodb.org/manual/reference/write-concern/

MongoDB 默认 w=1。你可以传个 w=0 告诉 MongoDB 你不想等它写操作完成。

PHPzhong

这个叫做“异步返回”。有些语言(比如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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板