SpringBoot集成mybatis整合redis实现缓存教程 springboot配置redis教程

 

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

使用redis作为缓存技术方案,主要是redis缓存技术的特点就在于高效,因为目前涉及的数据量逐渐增多,在对于数据的存储上面和sql以及服务器资源优化上面就来的特别的重要。而redis可以帮助解决由于数据库压力造成的延迟现象,针对于很少做改变的数据并且经常使用的数据,我们可以一致性加入内存。这样可以一方面减少数据库压力,一方面提高读写效率。下面笔者通过一个demo演示springboot整合mybatis以及redis的详细教程,对于springboot集成mybatis不熟悉的请移步这里查看教程详解《最全面的springBoot集成mybatis+mysql项目搭建经验分享》

1、在pom.xml文件添加Redis依赖

 
  1. <!-- Spring Boot Reids 依赖 -->

  2. <dependency>

  3. <groupId>org.springframework.boot</groupId>

  4. <artifactId>spring-boot-starter-redis</artifactId>

  5. <version>1.3.2.RELEASE</version>

  6. </dependency>

2、在application.yml文件中配置redis

 
  1. #默认是8080,此处使用配置8060

  2. server:

  3. port: 8060

  4.  
  5. spring:

  6. #数据源配置

  7. datasource:

  8. url: jdbc:mysql://localhost:3306/test

  9. username: root

  10. password: 123456

  11. driver-class-name: com.mysql.jdbc.Driver

  12. #springboot集成redis配置

  13. redis:

  14. # Redis服务器地址

  15. host: 127.0.0.1

  16. # Redis数据库索引(默认为0

  17. database: 0

  18. port: 6379

  19. # Redis服务器连接密码(默认为空)

  20. password: 123456

  21.  
  22. jedis:

  23. pool:

  24. # 连接池最大连接数(使用负值表示没有限制)

  25. max-active: 8

  26. max-idle: 8

  27. min-idle: 0

  28.  
  29. mybatis:

  30. #扫描实体类的位置,在此处指明扫描实体类的包,在mapper中就可以不用写实体类的全路径名了

  31. typeAliasesPackage: com.guo.springboot01.entity

  32. mapperLocations: classpath:mapper/*Dao.xml

3、controller,service,dao以及mapping映射文件代码

 
  1. @RestController

  2. @EnableAutoConfiguration

  3. public class UserController {

  4.  
  5. @Autowired

  6. private IUserService userService;

  7.  
  8. @AnalysisActuator(note = "测试自定义注解")

  9. @RequestMapping("findById")

  10. public User getUser(Integer id) {

  11. return userService.getUserById(id);

  12. }

  13.  
  14. @RequestMapping("findAll")

  15. public List<User> getAllUser() {

  16. return userService.findAll();

  17. }

  18. }

 
  1. @Service

  2. public class UserServiceImpl implements IUserService {

  3.  
  4. @Autowired

  5. private UserDao userDao;

  6.  
  7. @Autowired

  8. private RedisTemplate redisTemplate;

  9.  
  10. /**

  11. * 获取用户策略:先从缓存中获取用户,没有则取数据表中查

  12. * 数据,再将数据写入缓存

  13. */

  14. @Override

  15. public User getUserById(Integer id) {

  16. String key = id+"";

  17. ValueOperations <String,User> operations = redisTemplate.opsForValue();

  18. boolean hasKey = redisTemplate.hasKey(key);

  19. //如果缓存存在

  20. if(hasKey){

  21. User user = operations.get(key);

  22. System.out.println("==========从缓存中获得数据=========");

  23. System.out.println(user.getUserName());

  24. System.out.println("==============================");

  25. return user;

  26. }else{

  27. User user = userDao.findById(id);

  28. System.out.println("==========从数据表中获得数据=========");

  29. System.out.println(user.getUserName());

  30. System.out.println("==============================");

  31. //插入缓存

  32. operations.set(key, user,5, TimeUnit.MINUTES);

  33. return user;

  34. }

  35. }

  36.  
  37. @Override

  38. public List<User> findAll() {

  39. return userDao.findAll();

  40. }

  41. }

 
  1. public interface UserDao {

  2.  
  3. public User findById(Integer id);

  4.  
  5. public List<User> findAll();

  6. }

 
  1. <?xml version="1.0" encoding="UTF-8" ?>

  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >

  3. <mapper namespace="com.guo.springboot01.dao.UserDao" >

  4.  
  5. <resultMap id="BaseResultMap" type="com.guo.springboot01.entity.User" >

  6. <id column="id" property="id" jdbcType="INTEGER" />

  7. <result column="user_name" property="userName" jdbcType="VARCHAR" />

  8. <result column="age" property="age" jdbcType="INTEGER" />

  9. </resultMap>

  10.  
  11. <select id="findById" parameterType="java.lang.Integer" resultMap="BaseResultMap">

  12. select * from user where id = #{id}

  13. </select>

  14.  
  15. <select id="findAll" resultMap="BaseResultMap">

  16. select * from user

  17. </select>

  18. </mapper>

4、浏览器测试 

测试前先在本地mysql数据库里新建user表,插入2条测试数据,并且启动本地Redis服务

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

第二次请求,控制台输出

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值