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

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

SpringBoot集成mybatis整合redis实现缓存教程 springboot配置redis教程_第1张图片

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

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

    
	
		org.springframework.boot
		spring-boot-starter-redis
		1.3.2.RELEASE
	

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 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  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 findAll() {
        return userDao.findAll();
    }
}
public interface UserDao {

    public User findById(Integer id);

    public List findAll();
 }




    
        
        
        
    

    

    

4、浏览器测试 

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

SpringBoot集成mybatis整合redis实现缓存教程 springboot配置redis教程_第2张图片

SpringBoot集成mybatis整合redis实现缓存教程 springboot配置redis教程_第3张图片

SpringBoot集成mybatis整合redis实现缓存教程 springboot配置redis教程_第4张图片

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

第二次请求,控制台输出

欢迎开发者朋友一起学习,成长,交流,笔者电话(微信):18629374628

你可能感兴趣的:(Java基础,编程笔记)