美文网首页
使用SpringDataRedis加入缓存,防止同一查询请求到数

使用SpringDataRedis加入缓存,防止同一查询请求到数

作者: CodeGroup | 来源:发表于2019-03-10 21:23 被阅读0次

    首先在pom文件中加入redis

     <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-redis</artifactId>
     </dependency>
    

    然后在application.yam文件中配置redis

      redis:
        host: 127.0.0.1
    

    默认端口是6379,根据自己情况改变即可。

    接下来修改代码,我已以根据id查询职业这个业务为例

     @Autowired
        private RedisTemplate redisTemplate;
    

    在Sevice层加入RedisTemplate ,如上代码。

    在这里插入图片描述
    原始代码是这样,如果我们每次根据同一id来查询职业,是不是太消耗资源了呢?这个时候我们可以将查询存到缓存中来解决多次和数据库打交道这个问题,从而优化性能。
    我们将上述代码改成:
        /**
         * 根据 id查询职业
         * @param id
         * @return
         */
        public Job findById(String id){
    
            //先从缓存中查到这个对象
            Job job= (Job)redisTemplate.opsForValue().get("job_"+id);
    
            //如果没有找到
            if(job == null){
                //执行数据库查询操作
                job = jobDao.findById(id).get();
                
                //将查询结果存到缓存中
                redisTemplate.opsForValue().set("job_"+id,job);
            }
            return job;
    

    但是在运行项目时候,测试接口的时候会报一个错

    Servlet.service() for servlet [dispatcherServlet] in context with path [] thr   
    
    在这里插入图片描述
    通过百度到这篇博客得知
    要将将pojo实现序列化
    在这里插入图片描述
    然后接口就可以测试成功了
    在这里插入图片描述
    统一条件查询,请求多次也只会到数据库中查询一次了,从而达到了优化性能的目的~
    在这里插入图片描述

    相关文章

      网友评论

          本文标题:使用SpringDataRedis加入缓存,防止同一查询请求到数

          本文链接:https://www.haomeiwen.com/subject/cunppqtx.html