redis的缓存使用

一个项目的首页,通常是访问次数最多的页面,而首页一般会加载好多数据,如果访问系统比较多的时候,那会造成服务器(数据库)的压力,我们可以通过将请求首页的接口的数据,保存到缓存中

本文就介绍下,将首页的数据保存到redis缓存中的做法:

一、引入redis依赖

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

二、配置redis

spring:
   data:
    redis:
      host: 127.0.0.1
      port: 6379
      password: 

三、项目中使用redisTemplate将其放到缓存中

  @Resource
    private RedisTemplate<String,Object> redisTemplate; 

@RequestMapping("/getChatList")
    public ResponseEntity getChatList(){
        Long uid = SecurityUserInfoUtil.getSecurityUserDetails().getUid();
        int TypeCode = AiTypeEnum.CHAT.getCode();
        int ModelCode = AiModelEnum.OPENAI.getCode();
        String listCacheKey = AppVariable.getListCacheKey(uid, ModelCode, TypeCode);
        Object obj = redisTemplate.opsForValue().get(listCacheKey);
        // 如果缓存不为空,那么直接返回
        if (ObjUtil.isNotNull(obj)){
            log.info("OPENAI命中缓存");
            return ResponseEntity.success(obj);
        }
        // 如果缓存为空,那么查询数据库
        LambdaQueryWrapper<Answer> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(Answer::getUid, uid).eq(Answer::getType, TypeCode)
                .eq(Answer::getModel, ModelCode).orderByDesc(Answer::getAid);
        List<Answer> list = answerService.list(wrapper);
        redisTemplate.opsForValue().set(listCacheKey, list, 60 * 60 * 24, TimeUnit.SECONDS);
        return ResponseEntity.success(list);
    }

简单来说就是判断key对应的值是否为空,如果不为空,就会直接返回数据,如果为空,那么就去查询数据,然后放到缓存中,后面的请求就可以从缓存中获取数据了
当然也可以使用缓存预热的方式将其放到缓存中;

 

posted @ 2025-06-28 11:51  多多指教~  阅读(22)  评论(0)    收藏  举报