mongodb java读写分离_mongoDB 实现主从读写分离实现的实例代码

mongoDB主从读写分离

MongoDB官方已经不建议使用主从模式了,替代方案是采用副本集的模式, 点击查看。如果您的环境不符合副本集模式可参考本文,来实现主从读写分离。

resources.properties

mongodb_read.host=10.0.0.45

mongodb_read.port=27017

mongodb_read.apname=ecsp

mongodb_read.username=

mongodb_read.password=

mongodb_write.host=10.0.0.46

mongodb_write.port=27017

mongodb_write.apname=ecsp

mongodb_write.username=

mongodb_write.password=

mongo_config.xml

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"

xmlns:mongo="http://www.springframework.org/schema/data/mongo"

xsi:schemaLocation="http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-2.0.xsd

http://www.springframework.org/schema/data/mongo

http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd

http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

classpath:resources.properties

value="5" />

value="5" />

web.xml

contextConfigLocation

/WEB-INF/classes/mongo_config.xml

实体层ChexunMongoOptions.Java

package com.ecsp.chexun.mongo;

import javax.net.SocketFactory;

import com.mongodb.DBDecoderFactory;

import com.mongodb.MongoOptions;

/**

* Mongo配置类

*

* @author vincent.he

* @version 1.0, Created on 2012-3-12

*

*/

public class ChexunMongoOptions extends MongoOptions{

private String username;

private String password;

private String dbname;

public ChexunMongoOptions(){

super();

}

public void setDescription(String description) {

this.description = description;

}

public void setConnectionsPerHost(int connectionsPerHost) {

this.connectionsPerHost = connectionsPerHost;

}

public void setThreadsAllowedToBlockForConnectionMultiplier(

int threadsAllowedToBlockForConnectionMultiplier) {

this.threadsAllowedToBlockForConnectionMultiplier = threadsAllowedToBlockForConnectionMultiplier;

}

public void setMaxWaitTime(int maxWaitTime) {

this.maxWaitTime = maxWaitTime;

}

public void setConnectTimeout(int connectTimeout) {

this.connectTimeout = connectTimeout;

}

public void setSocketTimeout(int socketTimeout) {

this.socketTimeout = socketTimeout;

}

public void setSocketKeepAlive(boolean socketKeepAlive) {

this.socketKeepAlive = socketKeepAlive;

}

public void setAutoConnectRetry(boolean autoConnectRetry) {

this.autoConnectRetry = autoConnectRetry;

}

public void setMaxAutoConnectRetryTime(long maxAutoConnectRetryTime) {

this.maxAutoConnectRetryTime = maxAutoConnectRetryTime;

}

public void setSlaveOk(boolean slaveOk) {

this.slaveOk = slaveOk;

}

public void setDbDecoderFactory(DBDecoderFactory dbDecoderFactory) {

this.dbDecoderFactory = dbDecoderFactory;

}

public void setSafe(boolean safe) {

this.safe = safe;

}

public void setW(int w) {

this.w = w;

}

public void setWtimeout(int wtimeout) {

this.wtimeout = wtimeout;

}

public void setFsync(boolean fsync) {

this.fsync = fsync;

}

public void setJ(boolean j) {

this.j = j;

}

public void setSocketFactory(SocketFactory socketFactory) {

this.socketFactory = socketFactory;

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public String getDbname() {

return dbname;

}

public void setDbname(String dbname) {

this.dbname = dbname;

}

}

Java dao层

package com.ecsp.chexun.mongo;

import java.util.List;

import com.mongodb.BasicDBObject;

import com.mongodb.CommandResult;

import com.mongodb.DB;

import com.mongodb.DBCollection;

import com.mongodb.DBObject;

import com.mongodb.Mongo;

/**

* mongo 操做方法

* @author zhanglibing

*

*/

public class MongoHelper {

private Mongo mongo;

private Mongo mongo_read;

private Mongo mongo_write;

private String dataBaseName = "cxec";

public MongoHelper(){}

public MongoHelper(Mongo mongo,Mongo mongo_read,Mongo mongo_write){

this.mongo = mongo;

this.mongo_read = mongo_read;

this.mongo_write = mongo_write;

}

// public MongoHelper(String dbName){

// dataBaseName = dbName;

// }

public int add(String collectionName,BasicDBObject dbObject){

// DB db = MongoManager.getDB(dataBaseName);

DB db = mongo_write.getDB(dataBaseName);

DBCollection dbc = db.getCollection(collectionName);

return dbc.save(dbObject).getN();

}

//批量添加

public int addAll( String collectionName,List list){

// DB db = MongoManager.getDB(dataBaseName);

DB db = mongo_write.getDB(dataBaseName);

DBCollection dbc = db.getCollection(collectionName);

return dbc.insert(list).getN();

}

public int isExists(String collectionName,BasicDBObject query){

// DB db = MongoManager.getDB(dataBaseName);

DB db = mongo_read.getDB(dataBaseName);

DBCollection dbc = db.getCollection(collectionName);

return dbc.find(query).size();

}

public List get(String collectionName,BasicDBObject query){

// DB db = MongoManager.getDB(dataBaseName);

DB db = mongo_read.getDB(dataBaseName);

DBCollection dbc = db.getCollection(collectionName);

return dbc.find(query).toArray();

}

public int getCount(String collectionName,BasicDBObject query){

// DB db = MongoManager.getDB(dataBaseName);

DB db = mongo_read.getDB(dataBaseName);

DBCollection dbc = db.getCollection(collectionName);

return dbc.find(query).count();

}

public List get(String collectionName,BasicDBObject query,BasicDBObject keys){

// DB db = MongoManager.getDB(dataBaseName);

DB db = mongo_read.getDB(dataBaseName);

DBCollection dbc = db.getCollection(collectionName);

return dbc.find(query, keys).toArray();

}

/***

* 获取mongo 中 collection 的值

* @param collectionName

* @param query 查询条件

* @param keys 查询字段

* @param batchSize 返回个数

* @return

*/

public List get(String collectionName,BasicDBObject query,BasicDBObject keys,BasicDBObject orderBy,int batchSize){

// DB db = MongoManager.getDB(dataBaseName);

DB db = mongo_read.getDB(dataBaseName);

DBCollection dbc = db.getCollection(collectionName);

if(orderBy != null){

return dbc.find(query, keys).sort(orderBy).limit(batchSize).toArray();

}

return dbc.find(query, keys).limit(batchSize).toArray();

}

public List get(String collectionName,BasicDBObject query,BasicDBObject keys,BasicDBObject orderBy,int batchSize,int n){

// DB db = MongoManager.getDB(dataBaseName);

DB db = mongo_read.getDB(dataBaseName);

DBCollection dbc = db.getCollection(collectionName);

if(orderBy != null){

return dbc.find(query, keys).sort(orderBy).limit(batchSize).skip(n).toArray();

}

return dbc.find(query, keys).limit(batchSize).toArray();

}

public List get(String collectionName,DBObject query,int batchSize){

// DB db = MongoManager.getDB(dataBaseName);

DB db = mongo_read.getDB(dataBaseName);

DBCollection dbc = db.getCollection(collectionName);

return dbc.find(query).limit(batchSize).toArray();

}

public List get(String collectionName,int number){

DB db = mongo_read.getDB(dataBaseName);

DBCollection dbc = db.getCollection(collectionName);

List dboList = dbc.find().skip(0).limit(number).toArray();

return dboList;

}

public List get(String collectionName,BasicDBObject query,BasicDBObject orderBy,int n,int pageSize ){

DB db = mongo_read.getDB(dataBaseName);

DBCollection dbc = db.getCollection(collectionName);

List dboList = dbc.find(query).sort(orderBy).skip(n).limit(pageSize).toArray();

return dboList;

}

public List get(String collectionName,BasicDBObject query,int top ){

DB db = mongo_read.getDB(dataBaseName);

DBCollection dbc = db.getCollection(collectionName);

List dboList = dbc.find(query).skip(0).limit(top).toArray();

return dboList;

}

public List get(String collectionName,DBObject query,DBObject orderBy,int batchSize){

// DB db = MongoManager.getDB(dataBaseName);

DB db = mongo_read.getDB(dataBaseName);

DBCollection dbc = db.getCollection(collectionName);

return dbc.find(query).sort(orderBy).limit(batchSize).toArray();

}

public int reomve(String collectionName,BasicDBObject o){

// DB db = MongoManager.getDB(dataBaseName);

DB db = mongo_write.getDB(dataBaseName);

DBCollection dbc = db.getCollection(collectionName);

return dbc.remove(o).getN();

}

public int edit(String collectionName,BasicDBObject query,BasicDBObject update){

// DB db = MongoManager.getDB(dataBaseName);

DB db = mongo_write.getDB(dataBaseName);

DBCollection dbc = db.getCollection(collectionName);

return dbc.update(query, update).getN();

//return dbc.updateMulti(query, update).getN();

}

public int edit(String cmd){

// DB db = MongoManager.getDB(dataBaseName);

DB db = mongo.getDB(dataBaseName);

CommandResult cmdResult = db.command(cmd);

if(cmdResult.ok())

{

return 1;

}

return 0;

}

// public DBCollection get(String collectionName){

DB db = MongoManager.getDB(dataBaseName);

// DB db = mongo.getDB(dataBaseName);

// return db.getCollection(collectionName);

// }

public void setMongo(Mongo mongo) {

this.mongo = mongo;

}

public void setMongo_read(Mongo mongo_read) {

this.mongo_read = mongo_read;

}

public void setMongo_write(Mongo mongo_write) {

this.mongo_write = mongo_write;

}

}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值