Redis
第一步在你的pom.xml依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
第二步改application.yml,在spring节点下添加配置
redis:
host: 127.0.0.1
不填端口号就是6379
第三步
@Autowired
private RedisTemplate redisTemplate;
/**
* 根据ID查询实体
*
* @param id
* @return
*/
public Article findById(String id) {
//先从缓存中查询当前对象
Article article = (Article) redisTemplate.opsForValue().get("article_" + id);
//如果没有取到
if (article == null) {
//从数据库中查询
article = articleDao.findById(id).get();
//存入到缓存中
redisTemplate.opsForValue().set("article_" + id, article, 10, TimeUnit.MINUTES);
}
return article;
}
注意一点你进行其他操作记得要删除缓存
/**
* 增加
*
* @param article
*/
public void add(Article article) {
article.setId(idWorker.nextId() + "");
articleDao.save(article);
}
设置缓存时间为一天
redisTemplate.opsForValue().set("article_" + id, article,1,TimeUnit.DAYS);
Spring Cache
Spring Cache使用方法与Spring对事务管理的配置相似。Spring Cache的核心就是对某
个方法进行缓存,其实质就是缓存该方法的返回结果,并把方法参数和结果用键值对的
方式存放到缓存中,当再次调用该方法使用相应的参数时,就会直接从缓存里面取出指
定的结果进行返回。
常用注解:
@Cacheable-------使用这个注解的方法在执行后会缓存其返回结果。
@CacheEvict--------使用这个注解的方法在其执行前或执行后移除Spring Cache中的某些元素。
第一步:在你的启动类上添加@EnableCaching开启缓存支持
第二步:在你要缓存的方法上加添加缓存注解,这样当此方法第一次运行,在缓存中没有找到
对应的value和key,则将查询结果放入缓存
/**
* 根据ID查询实体
* @param id
* @return
*/
@Cacheable(value="gathering",key="#id")
public Gathering findById(String id) {
return gatheringDao.findById(id).get();
}
注意一点,进行其他操作的时候记得要清除缓存
/**
* 修改
* @param gathering
*/
@CacheEvict(value="gathering",key="#gathering.id")
public void update(Gathering gathering) {
gatheringDao.save(gathering);
}