比如redis哈。 你提交一个bgrewriteaof。会立马得到一个回复。即程序与redis的连接结束。redis自己在默默的执行操作。
mongodb有木有类似的命令参数?比如我remove掉一批object。尼玛等了30多分钟……= =。难道就木有 一个 db.collection.remove({param},{background:true})?= =
高洛峰2017-04-21 11:20:58
여기를 참조하세요: http://docs.mongodb.org/manual/reference/write-concern/
MongoDB는 기본값 w=1
입니다. w=0
을 전달하여 MongoDB에 쓰기 작업이 완료될 때까지 기다리지 않겠다고 알릴 수 있습니다.
PHPz2017-04-21 11:20:58
이를 "비동기 반환"이라고 합니다. 일부 언어(예: Java)에는 mongodb 비동기 드라이버가 있습니다. mongodb async + 사용하는 언어를 검색할 수 있습니다.
黄舟2017-04-21 11:20:58
현재 Redis는 인메모리 데이터베이스를 사용하는 경향이 있지만 Redis는 메모리의 데이터를 하드 디스크에 유지하고 다음 재시작 시 자동으로 복원할 수 있는 지속성 전략을 구성할 수 있습니다. bgrewriteaof는 Redis가 AOF 지속성 전략을 채택할 때 관리자가 AOF 재작성을 수동으로 트리거할 수 있도록 하는 명령입니다. Redis 2.4부터 AOF 재작성은 Redis에 의해 자동으로 트리거됩니다. 이러한 Redis 서버의 메인 스레드는 작업 명령을 받아들일 때마다 메모리와 AOF에 데이터를 기록한 다음 Redis가 자동으로 하드 디스크에 fsync하므로 사용자 작업이 차단되지 않습니다. 참조: Redis 지속성
Mongodb는 문서 기반 데이터베이스로 자리잡고 있으며 기본적으로 분산 아키텍처를 지원합니다. 문서 데이터베이스로서 지속성은 작업이 성공하기 전에 모든 데이터를 하드 디스크에 기록해야 한다는 것입니다. 분산 아키텍처는 지속성 작업(여러 서버 간의 데이터 동기화 보장, 분산 쓰기 전략 등)에 더 복잡한 문제를 가져옵니다.
요약하자면 Redis에서 제공하는 특정 기능은 Mongodb도 제공할 것이라고 기대하지 마세요. 두 가지의 초점이 다르기 때문입니다. Redis는 고성능 I/O에 더 중점을 두는 반면 mongodb는 스토리지에 더 중점을 둡니다. 성능을 고려하면서 많은 양의 데이터를 처리합니다.
귀하의 설명에 따르면 mongodb에 대한 요청이 심각하게 차단되었습니다. 허용할 수 있는 쓰기 작업 전략을 정의하기 위해 mongodb 작업을 요청할 때 요구 사항을 결합하고 WriteConcern을 첨부하는 것이 좋습니다. 참조: WriteConcern