- Redis 在 Spring Boot 中两个典型的应用场景:数据缓存、共享Session。此项目是 数据缓存 的例子。
一、构建工具选择:maven
二、使用 Spring Initializr 创建此 Spring Boot 项目时,Dependencies 选择了:
- Spring Boot DevTools
- Spring Web Starter
- Spring Session
- MySQL Driver
- JDBC API
- MyBatis Framework
- Spring Data Redis(Access+Driver)
- Spring Boot Actuator
1.下载镜像:
$ docker pull mysql:8.0.13
2.创建一个 mysql 容器
$ docker run -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d mysql:8.0.13
3.查看 mysql 容器的相关信息,会看到容器id、容器name
$ docker ps
4.进入创建的 mysql 容器的 bash,容器id或name为第3步骤看到的
$ docker exec -it yourContainerId或yourContainerName bash
5.进入 mysql 命令行,会提示输入 root 用户的密码(即第2步骤配置的:root)
$ mysql -uroot -proot
6.即可进行 mysql 数据库的管理工作
1.查看有几个数据库
mysql> show databases;
2.创建一个数据库
mysql> create database mysql_test;
3.查看数据库 mysql_test 的建库语句
mysql> show create database mysql_test\G
4.切换到某个数据库
mysql> use mysql_test;
5.查看数据库相关信息
mysql> status;
6.创建 users 表
mysql> CREATE TABLE `users` (
`id` bigint(20) AUTO_INCREMENT NOT NULL COMMENT '主键id',
`userName` varchar(32) DEFAULT '' NOT NULL COMMENT '用户名',
`passWord` varchar(32) DEFAULT '' NOT NULL COMMENT '密码',
`user_sex` varchar(32) DEFAULT '' NOT NULL COMMENT '性别',
`nick_name` varchar(32) DEFAULT '' NOT NULL COMMENT '昵称',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=28;
7.查看 users 表信息
mysql> desc users;
8.查看 users 表的建表语句
mysql> show create table users\G
9.查询 users 表
mysql> select * from users;
- 执行 src/test/java/tk/mybatis/springboot/controller/UserControllerTest .java、src/test/java/tk/mybatis/springboot/mapper/UserMapperTest.java 中的测试用例
- 运行:src/main/java/tk/mybatis/springboot/SpringbootApplication.java,或双击:maven->Plugins->spring-boot->spring-boot:run
- 访问首页及各地址:http://localhost:8080/
- 参考:http://blog.didispace.com/springbootswagger2/
- 访问 swagger-ui:http://localhost:8080/swagger-ui.html
- 创建容器(暴露端口:6379,使用 Redis 可视化界面工具(如:Fastoredis)连接 redis 时连接该端口):
docker run -it -p 6379:6379 redis:5.0.3
- 查看容器信息:
docker ps
- 进入容器:
docker exec -it 创建的容器名或容器id bash
- 进入redis命令行:
redis-cli
1.在pom.xml中引入cache依赖,添加如下内容:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
2.tk/mybatis/springboot/mapper/UserMapper.java
中配置了 @CacheConfig(cacheNames = "users")
,getAll 方法加注解 @Cacheable
时,redis中存在的key(redis-cli 中,通过命令:keys *
查看)为:users::SimpleKey []
;加注解 @Cacheable(value="user-key") 时,redis中存在的key为:user-key::SimpleKey []
;加注解 @Cacheable,并添加 tk/mybatis/springboot
/config/RedisConfig.java 时,redis中存在的key为:users::com.sun.proxy.$Proxy105getAll
。===解释:@CacheConfig
:主要用于配置该类中会用到的一些共用的缓存配置。在这里@CacheConfig(cacheNames = "users"):配置了该数据访问对象中返回的内容将存储于名为users
的缓存对象中,我们也可以不使用该注解,直接通过@Cacheable配置缓存集的名字来定义。
127.0.0.1:6379> keys *
1) "users::com.sun.proxy.$Proxy105getAll"
127.0.0.1:6379> type users::com.sun.proxy.$Proxy105getAll
string
127.0.0.1:6379> get users::com.sun.proxy.$Proxy105getAll
"\xac\xed\x00\x05sr\x00\x13java.util.ArrayListx\x81\xd2\x1d\x99\xc7a\x9d\x03\x00\x01I\x00\x04sizexp\x00\x00\x00\x03w\x04\x00\x00\x00\x03sr\x00 tk.mybatis.springboot.model.User\x00\x00\x00\x00\x00\x00\x00\x01\x02\x00\x05L\x00\x02idt\x00\x10Ljava/lang/Long;L\x00\bnickNamet\x00\x12Ljava/lang/String;L\x00\bpassWordq\x00~\x00\x04L\x00\buserNameq\x00~\x00\x04L\x00\auserSext\x00)Ltk/mybatis/springboot/enums/UserSexEnum;xpsr\x00\x0ejava.lang.Long;\x8b\xe4\x90\xcc\x8f#\xdf\x02\x00\x01J\x00\x05valuexr\x00\x10java.lang.Number\x86\xac\x95\x1d\x0b\x94\xe0\x8b\x02\x00\x00xp\x00\x00\x00\x00\x00\x00\x00\x1ct\x00\x00t\x00\aa123456t\x00\x02aa~r\x00'tk.mybatis.springboot.enums.UserSexEnum\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00xr\x00\x0ejava.lang.Enum\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00xpt\x00\x03MANsq\x00~\x00\x02sq\x00~\x00\a\x00\x00\x00\x00\x00\x00\x00\x1dt\x00\x00t\x00\ab123456t\x00\x02bb~q\x00~\x00\rt\x00\x05WOMANsq\x00~\x00\x02sq\x00~\x00\a\x00\x00\x00\x00\x00\x00\x00\x1et\x00\x00t\x00\ab123456t\x00\x02ccq\x00~\x00\x16x"
3.执行 tk/mybatis/springboot/mapper/UserMapperTest.java 中的 testQuery 方法,通过查看打印出的 sql 语句,来确定是否执行了数据库查询。
- 配置 Actuator 监控,参考:http://www.ityouknow.com/springboot/2018/02/06/spring-boot-actuator.html