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对应的值是否为空,如果不为空,就会直接返回数据,如果为空,那么就去查询数据,然后放到缓存中,后面的请求就可以从缓存中获取数据了
当然也可以使用缓存预热的方式将其放到缓存中;
浙公网安备 33010602011771号