spring boot 整合redis
简单记录一下spring 整合redis步骤:
老规矩,跟整合mybatis一样的步骤
1、创建Maven工程,不需要转war包(spring boot有内置的tomcat,可以直接运行jar包)
2、使用spring boot三步法:
(1)添加parent(继承原因,它能直接管理大部分需要的依赖j的ar包版本,能避免版本冲突,从而不需要parent工程了)
(2)添加初步依赖(这里添加spring boot和整合mybatis的初步依赖)
(3)创建启动类(启动类要额外加注解@MapperScan(basePackages = "com.xxxx.dao" 目的是扫描这个包中的dao接口)
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.itheima</groupId> <artifactId>spring_boot_demo05</artifactId> <version>1.0-SNAPSHOT</version> <parent> <artifactId>spring-boot-starter-parent</artifactId> <groupId>org.springframework.boot</groupId> <version>2.3.4.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.0.1</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies> </project>
3、前面几步完成后,需要创建application.yml文件(也可以是properties文件,但必须是application开头的文件名):
(1)需要配置当前使用环境
(2)在开发环境中配置tomcat端口号(默认8080)
(3)在开发环境中配置注册驱动的相关信息
(4)redis的相关配置
(5)如果没有采用在resources目录中创建跟dao相同路径的方式,而是直接在resources根目录下创建mappers包存放mapper映射文件的话,需要配置指定mapper文件路径
这里我没有上有注释的配置文件了,如果看不懂下面的代码的话,去看看我整合mybatis的随笔就能懂了,非常简单
spring: profiles: active: dev --- server: port: 8080 spring: profiles: dev datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost/abc111?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC username: root password: xxxx redis: host: localhost prrt: 6379 mybatis: mapper-locations: classpath:mappers/*Dao.xml
启动类还是一样,没有变化,也可以直接看整合mybatis的随笔中的代码,这里不挂了,但是我觉得可以挂一下操作redis的简单代码操作
@Service public class ServiceImpl { @Autowired //报错,不管,因为程序启动就会扫描到这个接口 private UserDao userDao; //这个就是操作redis的类了 @Autowired private RedisTemplate redisTemplate; public User findById(Integer id){ //先从redis 中查询 //redisTemplate.opsForValue().get 表示操作五种数据类型中的string类型 .get是获取 User user = (User) redisTemplate.opsForValue().get("user_"+id); //判断redis中是否有数据 if (user!=null){ return user; } //如果redis中没有,从sql中查询 User userSql = userDao.findById(id); //查到数据先放入redis中存储 //redisTemplate.opsForValue().set 表示操作五种数据类型中的String .set是添加 redisTemplate.opsForValue().set("user_"+id,userSql); //再返回查到的数据 return userSql; } }
这里注意,pojo一定要实现Serializable接口,因为这里涉及到序列化和反序列化的操作