springBoot集成Redis,RedisTmple操作redis和注解實現添加和清空緩存功能


配置

maven項目進入相關配置

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

配置文件添加redis配置

Application.properties

#redis鏈接地址
spring.redis.host=
#redis端口號 默認6379
spring.redis.port=
#redis密碼 如果沒有密碼可以不配置
spring.redis.password=
#redis的庫 可以理解為mysql的數據庫 redis默認0-15
spring.redis.database=

設置redis序列化方式

@Bean
public RedisTemplate setRedisTemplate(@Autowired RedisTemplate redisTemplate){
   StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
   Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
   GenericJackson2JsonRedisSerializer genericJackson2JsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
   redisTemplate.setKeySerializer(stringRedisSerializer);
   redisTemplate.setHashKeySerializer(stringRedisSerializer);
   redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
   redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
   return redisTemplate;
}

設置redis key的實效時長

@Bean
public CacheManager cacheManager(@Autowired RedisTemplate redisTemplate){
   RedisCacheManager redisCacheManager=new RedisCacheManager(redisTemplate);
   /*秒為單位,配置失效時間為一天*/
   redisCacheManager.setDefaultExpiration(86400L);
   return redisCacheManager;
}

具體使用

注解形式使用緩存
@Cacheable(value="test",key="#p0",nuless="#result==null")
public String getTest(String parameter) {
 if(parameter!=null){
   return parameter;
}
 return null;
}

value屬性表示當前方法的返回值是會被緩存在哪個Cache上

key屬性表示getTest方法返回結果時對應的key的

key的不同使用方式

key="#p0",key="p0.id",key="#parameter.trim()"

nulless屬性表示為忽略緩存,當方法的返回值達到我們預期的結果的時候可以設置為不添加緩存,以上例子為返回為null不添加緩存

注解形式刪除緩存
@CacheEvict(value = "pullDownList",key = "#parameter.trim()")
public boolean refresh(String parameter){
return true;
}

value要刪除的cache key要刪除的緩存的key

RedisTemplate使用redis

1.使用spring注入進來一個redis

@Autowired
private RedisTemplate redisTemplate;

2.獲得一個要redis儲存/獲取的key,value的類型

ValueOperations<String,String> valueOperations = redisTemplate.opsForValue();
valueOperations.set(key,value,long,TimeUnit);
String valueString=valueOperations.get(key);

TimeUnit是一個時間枚舉

3.查詢key是否存在

Boolean b=redisTemplate.hasKey(string);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM