日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Windows下安装Mongodb SpringBoot集成MongoDB和Redis多数据源

發布時間:2023/11/27 生活经验 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows下安装Mongodb SpringBoot集成MongoDB和Redis多数据源 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

全文內容:

Mongodb安裝

說明:Mongodb和redis是開發中常用的中間件,Redis的安裝使用比較簡單就不寫了,只說本地也就是Windows安裝Mongodb。

SpringBoot集成MongoDB和Redis

文中還有一個彩蛋Hutool

?

1.下載最新穩定版

https://www.mongodb.com/what-is-mongodb

例如我下載的版本是:mongodb-win32-x86_64-enterprise-windows-64-4.2.3-signed.msi?

2.安裝

選擇complete,完整安裝(安裝全部組件)。complete,完整的、完全的。

默認選項即可:

這里取消勾選:

由于我已經安裝好,不能再截圖,如果還有不清楚的同學可以看這里:

https://www.cnblogs.com/chy18883701161/p/11100560.html?

?

3.確認Windows服務啟動

測試:http://localhost:27017/

4.控制臺

安裝目錄的bin目錄,例如C:\Program Files\MongoDB\Server\4.2\bin?。

使用mongo啟動客戶端

可以查看數據庫和添加管理員賬戶

>show dbs
>use admin
>db.createUser({user:"admin",pwd:"password",roles:["root"]})
>db.auth("admin", "password")

創建一個數據庫paopaoedu,

增加一個數據庫管理員,用戶名密碼?paopaoedu//paopaoedu

插入一條數據,查詢一條數據

>use paopaoedu
>db.createUser({user: "paopaoedu", pwd: "paopaoedu", roles: [{ role: "dbOwner", db: "paopaoedu" }]})
>db.auth("paopaoedu", "paopaoedu")
>db.paopaoedu.insert({"host":" https://linuxstyle.blog.csdn.net/"})
>db.paopaoedu.find()

https://www.cnblogs.com/mengyu/p/9071371.html

?

5.使用圖形化客戶端

實際開發中一般不會用命令行,這個效率太低了,推薦的客戶端是robo3t,注意一定要下1.3.1不要用低版本,不然會報錯不能打開數據庫列表

robo3t-1.3.1-windows-x86_64-7419c406.exe

錯誤一:Error: Failed to execute "listdatabases" command?

這是因為沒有創建超級管理員賬戶或者數據庫管理員賬戶

錯誤二:Network error while attempting to run command 'saslStart' on host 'xxx:27017'

這是因為robo3t版本低于1.3.1

?

6.SpringBoot集成MongoDB和Redis

MongoDB安裝好以后是要在實際項目中使用的,現在都是SpringBoot。

SpringBoot集成MongoDB真的已經很簡單了。考慮到redis的使用也很簡單就一并集成了。

maven:

    <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><version>2.2.4.RELEASE</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.1.2</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.62</version></dependency></dependencies>

說明:Hutool是一個小而全的Java工具類庫,通過靜態方法封裝,降低相關API的學習成本,提高工作效率。hutool-all這個Util的jar非常方便,比如一些時間等常見的都被集成了。https://hutool.cn/docs/#/

Hutool包含組件

一個Java基礎工具類,對文件、流、加密解密、轉碼、正則、線程、XML等JDK方法進行封裝,組成各種Util工具類,同時提供以下組件:

模塊介紹
hutool-aopJDK動態代理封裝,提供非IOC下的切面支持
hutool-bloomFilter布隆過濾,提供一些Hash算法的布隆過濾
hutool-cache簡單緩存實現
hutool-core核心,包括Bean操作、日期、各種Util等
hutool-cron定時任務模塊,提供類Crontab表達式的定時任務
hutool-crypto加密解密模塊,提供對稱、非對稱和摘要算法封裝
hutool-dbJDBC封裝后的數據操作,基于ActiveRecord思想
hutool-dfa基于DFA模型的多關鍵字查找
hutool-extra擴展模塊,對第三方封裝(模板引擎、郵件、Servlet、二維碼、Emoji、FTP、分詞等)
hutool-http基于HttpUrlConnection的Http客戶端封裝
hutool-log自動識別日志實現的日志門面
hutool-script腳本執行封裝,例如Javascript
hutool-setting功能更強大的Setting配置文件和Properties封裝
hutool-system系統參數調用封裝(JVM信息等)
hutool-jsonJSON實現
hutool-captcha圖片驗證碼實現
hutool-poi針對POI中Excel的封裝
hutool-socket基于Java的NIO和AIO的Socket封裝

可以根據需求對每個模塊單獨引入,也可以通過引入hutool-all方式引入所有模塊。

配置文件:

server.port=8080# Redis數據庫索引(默認為0)
spring.redis.database=0 
# Redis服務器地址
spring.redis.host=你的redis主機IP
# Redis服務器連接端口
spring.redis.port=6379 
# Redis服務器連接密碼(默認為空)
spring.redis.password=
#連接池最大連接數(使用負值表示沒有限制)
spring.redis.pool.max-active=8 
# 連接池最大阻塞等待時間(使用負值表示沒有限制)
spring.redis.pool.max-wait=-1 
# 連接池中的最大空閑連接
spring.redis.pool.max-idle=8 
# 連接池中的最小空閑連接
spring.redis.pool.min-idle=0 
# 連接超時時間(毫秒)
spring.redis.timeout=300## 無密碼配置
## 如果存在此庫就直接連接,如果不存在此庫會自動創建
#spring.data.mongodb.uri=mongodb://localhost:27017/springboot_mongodb## 有密碼配置
## name:用戶名 / password:密碼
spring.data.mongodb.uri=mongodb://paopaoedu:paopaoedu@localhost:27017/paopaoedu

?model對象:

public class User implements Serializable {private static final long serialVersionUID = -1L;private String username;private String city;private Integer age;public String getCity() {return city;}public void setCity(String city) {this.city = city;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}}

這里為了簡單只是演示就寫一起,不分模塊了:?

@RestController
public class TestController {@Autowiredprivate RedisTemplate<String,String> redisTemplate;@Autowiredprivate MongoTemplate mongoTemplate;@RequestMapping("/")public String sayHello() {String nowtime= DateUtil.now();redisTemplate.opsForValue().set("nowtime",nowtime);String rs=redisTemplate.opsForValue().get("nowtime");User u=new User();u.setUsername("霞落滿天");u.setCity("銀河系");u.setAge(12);mongoTemplate.insert(u);List<User> ulist=mongoTemplate.findAll(User.class);String json = JSON.toJSONString(ulist);return "HelloWorld SpringBoot "+rs+"    "+json;}
}

?Redis用這個客戶端:redis-desktop-manager-0.8.8.384.exe

?

多數據源的配置

單數據源自動讀配置文件,多數據源自然需要你指定數據源,然后使用注解的方式。其實不管是redis還是mongodb還是MYSQL套路都是一樣的,就是定義不同數據源,然后定義多個配置工廠的bean,要用的時候注入即可。

Redis多數據源參考:

https://blog.csdn.net/liubenlong007/article/details/86477692

這個的工程化更好一點,一個數據源一個獨立的class比較好

https://blog.csdn.net/huangpeigui/article/details/90518844

?

mongodb多數據源參考:

https://blog.csdn.net/qq_28851503/article/details/90340642

?

以redis為例,下面是我修改的代碼,如果需要可以按需增加連接池配置。

先定義配置文件,假設我們有2個不同的Redis:

# Redis服務器地址
spring.redis.master.host=xxx.redis.rds.aliyuncs.com
# Redis服務器連接端口
spring.redis.master.port=6379
# Redis服務器連接密碼(默認為空)
spring.redis.master.password=xxx# Redis服務器地址
spring.redis.follow.host=xxx.redis.rds.aliyuncs.com
# Redis服務器連接端口
spring.redis.follow.port=6379
# Redis服務器連接密碼(默認為空)
spring.redis.follow.password=xxx

?maven增加依賴庫:

        <dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId></dependency>

定義數據源配置文件:


@Configuration
public class RedisConfig {//master@Value("${spring.redis.master.host}")private String masterHost;@Value("${spring.redis.master.port}")private String masterPort;@Value("${spring.redis.master.password}")private String masterPassword;//salve@Value("${spring.redis.follow.host}")private String salveHost;@Value("${spring.redis.follow.port}")private String salvePort;@Value("${spring.redis.follow.password}")private String salvePassword;/*** 配置lettuce連接池** @return*/@Bean@ConfigurationProperties(prefix = "spring.redis.lettuce.pool")public GenericObjectPoolConfig redisPool() {return new GenericObjectPoolConfig<>();}/*** 配置第一個數據源的** @return*/@Bean//@ConfigurationProperties(prefix = "spring.redis")public RedisStandaloneConfiguration redisConfig1() {RedisStandaloneConfiguration rsc = new RedisStandaloneConfiguration();rsc.setHostName(masterHost);rsc.setPort(Integer.parseInt(masterPort));rsc.setPassword(masterPassword);return rsc;}/*** 配置第二個數據源** @return*/@Bean//@ConfigurationProperties(prefix = "spring.redis.follow")public RedisStandaloneConfiguration redisConfig2() {RedisStandaloneConfiguration rsc = new RedisStandaloneConfiguration();rsc.setHostName(salveHost);rsc.setPort(Integer.parseInt(salvePort));rsc.setPassword(salvePassword);return rsc;}/*** 配置第一個數據源的連接工廠* 這里注意:需要添加@Primary 指定bean的名稱,目的是為了創建兩個不同名稱的LettuceConnectionFactory** @param config* @param redisConfig1* @return*/@Bean("factory1")@Primarypublic LettuceConnectionFactory factory(GenericObjectPoolConfig config, RedisStandaloneConfiguration redisConfig1) {LettuceClientConfiguration clientConfiguration = LettucePoolingClientConfiguration.builder().poolConfig(config).build();return new LettuceConnectionFactory(redisConfig1, clientConfiguration);}@Bean("factory2")public LettuceConnectionFactory factory2(GenericObjectPoolConfig config, RedisStandaloneConfiguration redisConfig2) {LettuceClientConfiguration clientConfiguration = LettucePoolingClientConfiguration.builder().poolConfig(config).build();return new LettuceConnectionFactory(redisConfig2, clientConfiguration);}/*** 配置第一個數據源的RedisTemplate* 注意:這里指定使用名稱=factory 的 RedisConnectionFactory* 并且標識第一個數據源是默認數據源 @Primary** @param factory1* @return*/@Bean("redisTemplate1")@Primarypublic RedisTemplate<String, String> redisTemplate(@Qualifier("factory1") RedisConnectionFactory factory1) {return getStringStringRedisTemplate(factory1);}/*** 配置第一個數據源的RedisTemplate* 注意:這里指定使用名稱=factory2 的 RedisConnectionFactory** @param factory2* @return*/@Bean("redisTemplate2")public RedisTemplate<String, String> redisTemplate2(@Qualifier("factory2") RedisConnectionFactory factory2) {return getStringStringRedisTemplate(factory2);}/*** 設置序列化方式 (這一步不是必須的)** @param factory2* @return*/private RedisTemplate<String, String> getStringStringRedisTemplate(RedisConnectionFactory factory2) {StringRedisTemplate template = new StringRedisTemplate(factory2);template.setKeySerializer(RedisSerializer.string());template.setValueSerializer(new FastJsonRedisSerializer<>(Object.class));template.setHashKeySerializer(RedisSerializer.string());template.setHashValueSerializer(new FastJsonRedisSerializer<>(Object.class));return template;}

使用非常簡單:

@Autowired@Qualifier("redisTemplate1")private RedisTemplate redisTemplate1;@Autowired@Qualifier("redisTemplate2")private RedisTemplate redisTemplate2;

?

總結

以上是生活随笔為你收集整理的Windows下安装Mongodb SpringBoot集成MongoDB和Redis多数据源的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。