Spring boot 用docker整合mysql和redis

首先用docker拉下來mysql和redis的鏡像

docker pull mysql
docker pull redis

然后創(chuàng)建mysql容器

docker run -tid --name mysql-test -p 3306:3306 -p 33060:33060 -e MYSQL_ROOT_PASSWORD=123456 mysql 

如果想把數(shù)據(jù)卷映射到本地文件夾可以用-v

docker run -ti --name mysql-test -p 3306:3306 -p 33060:33060  -v 自己弄個(gè)文件夾:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql 

同理redis的容器也可以

docker run -itd --name redis-test -p 6379:6379 redis

弄好之后就可以創(chuàng)建spring boot的項(xiàng)目,這里用的是IDEA里的Spring initializr


1.png

把redis和mysl的勾上(mybatis和web不一定要勾上)。就行了

這個(gè)時(shí)候生成了一個(gè)pom.xml

這個(gè)時(shí)候再在pom.xml里面加一些其他依賴

<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <optional>true</optional>
</dependency>


<dependency>
  <groupId>io.lettuce</groupId>
  <artifactId>lettuce-core</artifactId>
</dependency>
<dependency>
  <groupId>io.netty</groupId>
  <artifactId>netty-all</artifactId>
</dependency>
<dependency>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-pool2</artifactId>
</dependency>

下面3個(gè)如果不加的話可能會報(bào)一下 classNotFoundException,反正我就遇到了,之前看別人的教程感覺別人沒加也正常跑起來了

然后配置一下application.yml 或者application.properties,兩個(gè)功能是一樣的只是語法不一樣而已

# 數(shù)據(jù)庫設(shè)置
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/databases?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8
    username: root
    password: 123456

  redis:
    host: 127.0.0.1
    port: 6379
    timeout: 3000ms
    lettuce:
      pool:
        max-active: 8 # 連接池最大連接數(shù)
        max-idle: 8 # 連接池最大空閑連接數(shù)
        min-idle: 0 # 連接池最小空閑連接數(shù)
        max-wait: -1ms # 連接池最大阻塞等待時(shí)間,負(fù)值表示沒有限制



mybatis:
  type-aliases-package: com.example.demo.Model
  mapper-locations: classpath:mapper/*.xml

這里配置了mysql的驅(qū)動,redis的驅(qū)動和一個(gè)mybatis的東西

處理一下sql,隨便搞個(gè)database,弄一張表

CREATE TABLE `demo`.`user` (
  `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `nickname` VARCHAR(50) NULL COMMENT '昵稱',
  `mobile` VARCHAR(20) NULL COMMENT '手機(jī)號',
  `password` CHAR(60) NULL COMMENT '密碼hash值',
  `role` VARCHAR(100) NULL DEFAULT 'user' COMMENT '角色,角色名以逗號分隔',
  PRIMARY KEY (`id`),
  UNIQUE INDEX `mobile_UNIQUE` (`mobile` ASC))
COMMENT = '用戶表';

INSERT INTO `demo`.`user` (`nickname`, `mobile`, `password`) VALUES ('abc1', '13512345678', '123');

弄到這里其實(shí)就好了。這里關(guān)于mybatis的就不寫了,網(wǎng)上很多,然后弄一個(gè)測試類來單元測試一下

@SpringBootTest
class ZhangApplicationTests {

   @Autowired
   RedisTemplate redisTemplate;
   
   @Autowired
   UserMapper userMapper;

   @Test
   void contextLoads() {
      User user = userMapper.selectByPrimaryKey(1);System.out.println(user);
      redisTemplate.opsForValue().set("key","14");
      System.out.println(redisTemplate.opsForValue().get("key"));

      System.out.println(userMapper.selectByPrimaryKey(1));
   }

}

然后輸出


2.png

這里14和user的信息都有了,讓我們看看數(shù)據(jù)庫中是什么樣的

mysql里面,成功讀出了的


3.png

redis里面,成功寫入而且讀出了的


4.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容