首先在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
实现序列化在这里插入图片描述
然后接口就可以测试成功了
在这里插入图片描述
统一条件查询,请求多次也只会到数据库中查询一次了,从而达到了优化性能的目的~
在这里插入图片描述
网友评论