亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MongoDB > 正文

mongoDB 實現主從讀寫分離實現的實例代碼

2020-03-14 13:01:06
字體:
來源:轉載
供稿:網友

mongoDB主從讀寫分離

MongoDB官方已經不建議使用主從模式了,替代方案是采用副本集的模式, 點擊查看。如果您的環境不符合副本集模式可參考本文,來實現主從讀寫分離。

resources.properties

mongodb_read.host=10.0.0.45mongodb_read.port=27017mongodb_read.apname=ecspmongodb_read.username=mongodb_read.password=mongodb_write.host=10.0.0.46mongodb_write.port=27017mongodb_write.apname=ecspmongodb_write.username=mongodb_write.password=

mongo_config.xml

<beans xmlns="http://www.springframework.org/schema/beans"  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">  <!-- 連接數據庫信息 -->  <bean id="propertyConfigurer"    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">    <property name="locations">      <list>        <value>classpath:resources.properties</value>      </list>    </property>  </bean>  <!-- 讀start -->  <bean id="mongoServerReadAddress" class="com.mongodb.ServerAddress">    <constructor-arg value="${mongodb_read.host}"></constructor-arg>    <constructor-arg value="${mongodb_read.port}"></constructor-arg>  </bean>  <bean id="chexunMongoReadOptions" class="com.ecsp.chexun.mongo.ChexunMongoOptions">    <property name="username" value="${mongodb_read.username}" />    <property name="password" value="${mongodb_read.password}" />    <property name="dbname" value="${mongodb_read.apname}" />    <property name="connectionsPerHost" value="100" />    <property name="threadsAllowedToBlockForConnectionMultiplier"      value="5" />    <property name="slaveOk" value="true" />  </bean>  <bean id="mongo_read" class="com.mongodb.Mongo">    <constructor-arg ref="mongoServerReadAddress"></constructor-arg>    <constructor-arg ref="chexunMongoReadOptions"></constructor-arg>  </bean>  <!-- 讀end -->  <!-- 寫start -->  <bean id="mongoServerWriteAddress" class="com.mongodb.ServerAddress">    <constructor-arg value="${mongodb_write.host}"></constructor-arg>    <constructor-arg value="${mongodb_write.port}"></constructor-arg>  </bean>  <bean id="chexunMongoWriteOptions" class="com.ecsp.chexun.mongo.ChexunMongoOptions">    <property name="username" value="${mongodb_write.username}" />    <property name="password" value="${mongodb_write.password}" />    <property name="dbname" value="${mongodb_write.apname}" />    <property name="connectionsPerHost" value="100" />    <property name="threadsAllowedToBlockForConnectionMultiplier"      value="5" />  </bean>  <bean id="mongo_write" class="com.mongodb.Mongo">    <constructor-arg ref="mongoServerWriteAddress"></constructor-arg>    <constructor-arg ref="chexunMongoWriteOptions"></constructor-arg>  </bean>  <!-- 寫end -->  <!-- 鏈接對象注入start -->  <bean id="mongoHelper" class="com.ecsp.chexun.mongo.MongoHelper">    <constructor-arg ref="mongo_read"></constructor-arg>    <constructor-arg ref="mongo_write"></constructor-arg>  </bean>  <!-- 鏈接對象注入end --></beans>

web.xml

<context-param>  <param-name>contextConfigLocation</param-name>  <param-value>    /WEB-INF/classes/mongo_config.xml  </param-value></context-param>

實體層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<DBObject> 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<DBObject> 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<DBObject> 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<DBObject> 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<DBObject> 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<DBObject> 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<DBObject> get(String collectionName,int number){    DB db = mongo_read.getDB(dataBaseName);    DBCollection dbc = db.getCollection(collectionName);      List<DBObject> dboList = dbc.find().skip(0).limit(number).toArray();    return dboList;  }  public List<DBObject> get(String collectionName,BasicDBObject query,BasicDBObject orderBy,int n,int pageSize ){    DB db = mongo_read.getDB(dataBaseName);    DBCollection dbc = db.getCollection(collectionName);      List<DBObject> dboList = dbc.find(query).sort(orderBy).skip(n).limit(pageSize).toArray();    return dboList;  }  public List<DBObject> get(String collectionName,BasicDBObject query,int top ){    DB db = mongo_read.getDB(dataBaseName);    DBCollection dbc = db.getCollection(collectionName);      List<DBObject> dboList = dbc.find(query).skip(0).limit(top).toArray();    return dboList;  }  public List<DBObject> 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;  }}

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


注:相關教程知識閱讀請移步到MongoDB頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久视频免费观看| 国产在线精品成人一区二区三区| 国内精品免费午夜毛片| 欧美激情精品久久久久久黑人| 中文字幕亚洲欧美日韩2019| 欧美激情aaaa| 国产精品一区二区电影| 亚洲免费小视频| 亚洲激情视频网站| 欧美性20hd另类| 久久艹在线视频| 日韩av在线网页| 亚洲精品综合久久中文字幕| 在线日韩中文字幕| 精品视频9999| 欧美精品一区二区三区国产精品| 久久天天躁夜夜躁狠狠躁2022| 久久成人免费视频| 国产亚洲日本欧美韩国| 色综合久久精品亚洲国产| 久久99国产精品自在自在app| 欧美日韩国产成人在线| 久久久久久久久久久成人| zzjj国产精品一区二区| 日韩精品免费看| 日韩精品丝袜在线| 中文字幕日韩在线视频| 成人黄在线观看| 岛国av在线不卡| 一区二区三区美女xx视频| 91成品人片a无限观看| 中文字幕亚洲国产| 亚洲天堂网在线观看| 国产精品爱久久久久久久| 欧美日韩999| 国产精品爽爽爽爽爽爽在线观看| 精品偷拍一区二区三区在线看| 国产精品h在线观看| 中文字幕不卡在线视频极品| 欧美激情videoshd| 国产精品网红直播| 国产精品小说在线| 日韩大陆欧美高清视频区| 亚洲经典中文字幕| 97精品一区二区视频在线观看| 午夜免费久久久久| 欧美午夜影院在线视频| 日韩av在线网址| 精品动漫一区二区| 成人午夜一级二级三级| 欧美高清一级大片| 国产精品久久久久久亚洲调教| 国产亚洲精品久久久久动| 欧美成人午夜剧场免费观看| 亚洲欧美一区二区三区在线| 91精品国产色综合久久不卡98| 国产69精品久久久久9| 亚洲欧美中文在线视频| 欧美成人在线网站| 在线看欧美日韩| 91日本视频在线| 久久久久久久电影一区| 国产精品三级美女白浆呻吟| 日韩电影免费观看在线| 国产精品一区二区电影| 亚洲一区免费网站| 欧美猛男性生活免费| 中文字幕亚洲欧美日韩在线不卡| 欧美超级乱淫片喷水| 黄色一区二区三区| 国产精品久久久久久久久免费看| 国内精品久久久久久影视8| 亚洲国产91精品在线观看| 精品亚洲一区二区三区在线播放| www.久久草.com| 91在线观看欧美日韩| 在线看日韩av| 亚洲a一级视频| 伊人伊成久久人综合网小说| 国产女人精品视频| 亚洲欧美激情在线视频| 欧美一级片在线播放| 88国产精品欧美一区二区三区| 亚洲精品v欧美精品v日韩精品| 亚洲一区二区久久久久久| 国产精品免费在线免费| 欧美视频13p| 欧美日韩国产精品| 成人精品一区二区三区电影黑人| 欧美精品aaa| 日韩欧美成人免费视频| 91精品国产乱码久久久久久蜜臀| 96sao精品视频在线观看| 疯狂欧美牲乱大交777| 久久理论片午夜琪琪电影网| 欧美精品做受xxx性少妇| 日韩视频在线一区| 亚洲图片欧美日产| 亚洲已满18点击进入在线看片| 国产精品日日摸夜夜添夜夜av| 川上优av一区二区线观看| 欧美日韩激情网| 在线国产精品播放| 久久精品免费播放| 久久免费视频在线| 亚洲精品久久久久久久久久久| 久久的精品视频| yellow中文字幕久久| 午夜精品一区二区三区在线视频| 国产精品久久久久免费a∨| 久久99国产精品久久久久久久久| 日韩精品中文字幕在线播放| 成人福利视频在线观看| 欧美激情区在线播放| 欧美性猛交xxxx偷拍洗澡| 国产在线观看91精品一区| 久久久久国产精品免费网站| 亚洲最新视频在线| 亚洲伊人久久大香线蕉av| 在线亚洲国产精品网| 日韩欧美在线观看视频| 欧美最猛性xxxxx免费| 亚洲最新av在线| 亚洲精品自拍视频| 亚洲色图激情小说| 国产精品精品视频| 日韩av在线不卡| 欧美理论电影网| 久久久综合免费视频| 欧美中文字幕在线播放| 国产精品久久久一区| 亚洲第一国产精品| 国产欧美 在线欧美| 欧美日韩国产一区中文午夜| 国产成人在线精品| 欧美丝袜第一区| 欧美激情videoshd| 国外日韩电影在线观看| 51色欧美片视频在线观看| 亚洲白拍色综合图区| 久久久久久久久综合| 欧美日韩人人澡狠狠躁视频| 538国产精品一区二区在线| 亚洲乱码一区av黑人高潮| 丝袜亚洲另类欧美重口| 日韩在线观看免费全集电视剧网站| 久久人人爽人人爽人人片亚洲| 97久久精品人人澡人人爽缅北| 91精品久久久久久久久不口人| 亚洲另类图片色| 国产精品久久一| 欧美一区二区大胆人体摄影专业网站| 98精品在线视频| 亚洲国产精品大全| 久久这里有精品视频| 亚洲国产福利在线| 欧美日韩一区二区三区在线免费观看| 久久99国产综合精品女同| 欧美精品videosex极品1| 欧美国产日本高清在线| 91在线国产电影| 久久九九全国免费精品观看| 精品中文字幕在线| 国产精品91久久久久久|