springboot中使用springdataRedis和spring cache注解去做缓存控制步骤,以及RedisTemplate常用方法

springdataRedis方式

1.引入依赖

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

备注:spring‐boot‐starter‐data‐redis帮我们完成了默认配置文件,但是其他的不固定配置内容需要我们自己在yml中配置,如第2点

2.application.yml中指定redis服务器ip和端口

redis:
    host: 192.168.184.134

3.在需要的地址注入RedisTemplate,例如service层

@Autowired    
private RedisTemplate redisTemplate; 

4,.使用RedisTemplate从缓存获取or添加键值对

/**    
 * 根据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);            
}        
return article;        
} 

总结:RedisTemplate常用方法

stringRedisTemplate.opsForValue().set("test", "100",60*10,TimeUnit.SECONDS);//向redis里存入数据和设置缓存时间
stringRedisTemplate.opsForValue().get("test")//根据key获取缓存中的val
stringRedisTemplate.boundValueOps("test").increment(-1);//val做-1操作
stringRedisTemplate.boundValueOps("test").increment(1);//val +1
stringRedisTemplate.getExpire("test")//根据key获取过期时间
stringRedisTemplate.getExpire("test",TimeUnit.SECONDS)//根据key获取过期时间并换算成指定单位
stringRedisTemplate.delete("test");//根据key删除缓存
stringRedisTemplate.hasKey("546545");//检查key是否存在,返回boolean值
stringRedisTemplate.expire("red_123",1000 , TimeUnit.MILLISECONDS);//设置过期时间
stringRedisTemplate.opsForSet().add("red_123", "1","2","3");//向指定key中存放set集合
stringRedisTemplate.opsForSet().isMember("red_123", "1")//根据key查看集合中是否存在指定数据
stringRedisTemplate.opsForSet().members("red_123");//根据key获取set集合

常用方法例子

/**    
 * 修改    
 * @param article    
 */    
public void update(Article article) {    
redisTemplate.delete( "article_" + article.getId() );//删除缓存        
articleDao.save(article);        
}    
/**    
 * 删除    
 * @param id    
 */    
public void deleteById(String id) {    
redisTemplate.delete( "article_" + id );//删除缓存        
articleDao.deleteById(id);        
} 

设置过期时间为10秒

redisTemplate.opsForValue().set("article_" + id, article,10,
TimeUnit.SECONDS);

spring cache注解的方式

Spring Cache使用方法与Spring对事务管理的配置相似。Spring Cache的核心就是对某
个方法进行缓存,其实质就是缓存该方法的返回结果,并把方法参数和结果用键值对的
方式存放到缓存中,当再次调用该方法使用相应的参数时,就会直接从缓存里面取出指
定的结果进行返回

常用注解:
@Cacheable-------使用这个注解的方法在执行后会缓存其返回结果。
@CacheEvict--------使用这个注解的方法在其执行前或执行后移除Spring Cache中的某些
元素。

实现方式

1.引入依赖同上
2.修改yml同上
3.启动类加@EnableCaching开启缓存支持(区别)

例如

```java
/**    
 * 根据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);        
}    
/**    
 * 删除    
 * @param id    
 */    
@CacheEvict(value="gathering",key="#id")    
public void deleteById(String id) {    
gatheringDao.deleteById(id);        
} 
发布了51 篇原创文章 · 获赞 1 · 访问量 1668

猜你喜欢

转载自blog.csdn.net/douxubao/article/details/104933730
今日推荐