缓存:即将常用的并且不会频繁变更的数据存入内存当中,从而减少服务器数据库压力,提升访问速率。

使用redis作为缓存技术方案,主要是redis缓存技术的特点就在于高效,因为目前涉及的数据量逐渐增多,在对于数据的存储上面和sql以及服务器资源优化上面就来的特别的重要。而redis可以帮助解决由于数据库压力造成的延迟现象,针对于很少做改变的数据并且经常使用的数据,我们可以一致性加入内存。这样可以一方面减少数据库压力,一方面提高读写效率。下面笔者通过一个demo演示springboot整合mybatis以及redis的详细教程,对于springboot集成mybatis不熟悉的请移步这里查看教程详解《最全面的springBoot集成mybatis+mysql项目搭建经验分享》
1、在pom.xml文件添加Redis依赖
-
<!-- Spring Boot Reids 依赖 --> -
<dependency> -
<groupId>org.springframework.boot</groupId> -
<artifactId>spring-boot-starter-redis</artifactId> -
<version>1.3.2.RELEASE</version> -
</dependency>
2、在application.yml文件中配置redis
-
#默认是8080,此处使用配置8060 -
server: -
port: 8060 -
spring: -
#数据源配置 -
datasource: -
url: jdbc:mysql://localhost:3306/test -
username: root -
password: 123456 -
driver-class-name: com.mysql.jdbc.Driver -
#springboot集成redis配置 -
redis: -
# Redis服务器地址 -
host: 127.0.0.1 -
# Redis数据库索引(默认为0 -
database: 0 -
port: 6379 -
# Redis服务器连接密码(默认为空) -
password: 123456 -
jedis: -
pool: -
# 连接池最大连接数(使用负值表示没有限制) -
max-active: 8 -
max-idle: 8 -
min-idle: 0 -
mybatis: -
#扫描实体类的位置,在此处指明扫描实体类的包,在mapper中就可以不用写实体类的全路径名了 -
typeAliasesPackage: com.guo.springboot01.entity -
mapperLocations: classpath:mapper/*Dao.xml
3、controller,service,dao以及mapping映射文件代码
-
@RestController -
@EnableAutoConfiguration -
public class UserController { -
@Autowired -
private IUserService userService; -
@AnalysisActuator(note = "测试自定义注解") -
@RequestMapping("findById") -
public User getUser(Integer id) { -
return userService.getUserById(id); -
} -
@RequestMapping("findAll") -
public List<User> getAllUser() { -
return userService.findAll(); -
} -
}
-
@Service -
public class UserServiceImpl implements IUserService { -
@Autowired -
private UserDao userDao; -
@Autowired -
private RedisTemplate redisTemplate; -
/** -
* 获取用户策略:先从缓存中获取用户,没有则取数据表中查 -
* 数据,再将数据写入缓存 -
*/ -
@Override -
public User getUserById(Integer id) { -
String key = id+""; -
ValueOperations <String,User> operations = redisTemplate.opsForValue(); -
boolean hasKey = redisTemplate.hasKey(key); -
//如果缓存存在 -
if(hasKey){ -
User user = operations.get(key); -
System.out.println("==========从缓存中获得数据========="); -
System.out.println(user.getUserName()); -
System.out.println("=============================="); -
return user; -
}else{ -
User user = userDao.findById(id); -
System.out.println("==========从数据表中获得数据========="); -
System.out.println(user.getUserName()); -
System.out.println("=============================="); -
//插入缓存 -
operations.set(key, user,5, TimeUnit.MINUTES); -
return user; -
} -
} -
@Override -
public List<User> findAll() { -
return userDao.findAll(); -
} -
}
-
public interface UserDao { -
public User findById(Integer id); -
public List<User> findAll(); -
}
-
<?xml version="1.0" encoding="UTF-8" ?> -
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > -
<mapper namespace="com.guo.springboot01.dao.UserDao" > -
<resultMap id="BaseResultMap" type="com.guo.springboot01.entity.User" > -
<id column="id" property="id" jdbcType="INTEGER" /> -
<result column="user_name" property="userName" jdbcType="VARCHAR" /> -
<result column="age" property="age" jdbcType="INTEGER" /> -
</resultMap> -
<select id="findById" parameterType="java.lang.Integer" resultMap="BaseResultMap"> -
select * from user where id = #{id} -
</select> -
<select id="findAll" resultMap="BaseResultMap"> -
select * from user -
</select> -
</mapper>
4、浏览器测试
测试前先在本地mysql数据库里新建user表,插入2条测试数据,并且启动本地Redis服务



第一次请求,控制台输出:

第二次请求,控制台输出

本文介绍使用Redis作为缓存技术,可减少服务器数据库压力、提升访问速率。通过一个demo详细演示了Spring Boot整合MyBatis和Redis的教程,包括在pom.xml添加Redis依赖、在application.yml配置Redis、编写相关代码,还说明了测试前的准备及测试情况。
8318

被折叠的 条评论
为什么被折叠?



