1. 程式人生 > 程式設計 >Spring Cache手動清理Redis快取

Spring Cache手動清理Redis快取

這篇文章主要介紹了Spring Cache手動清理Redis快取,文中通過示例程式碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

註冊cacheRedisTemplate

將 cache 的 RedisTemplate 註冊為Bean

@Bean(name = "cacheRedisTemplate")
public RedisTemplate cacheRedisTemplate(@Qualifier("jedisConnectionFactory") JedisConnectionFactory jedisConnectionFactory,@Qualifier("jedisYsfKeySerializer") RedisSerializer jedisYsfKeySerializer,@Qualifier("jedisYsfValueSerializer") RedisSerializer jedisYsfValueSerializer) {
  RedisTemplate cacheRedisTemplate = new RedisTemplate();
  cacheRedisTemplate.setConnectionFactory(jedisConnectionFactory);
  cacheRedisTemplate.setEnableTransactionSupport(false);
  cacheRedisTemplate.setKeySerializer(jedisYsfKeySerializer);
  cacheRedisTemplate.setValueSerializer(jedisYsfValueSerializer);
  return cacheRedisTemplate;
}

使用cacheRedisTemplate

那麼在清除快取的時候,可以直接使用 cacheRedisTemplate .

....

@Autowired 
@Qualifier("cacheRedisTemplate") 
var cacheRedisTemplate : YsfRedisTemplate[String,Object] = _

...

cacheRedisTemplate.delete(s"cc.c.sta.real.in.day:$id-$start-$i")

這裡是scala的語法,java 同理

其他寫快取,查快取,都一樣操作 .

奇異用法

在 Mybatis 的 Dao 上加註解 .

@CacheEvict(value = CACHE_PREFIX,key = "#root.args[0]+'-'+#root.args[1]+'-'+#root.args[2]")
int clearCache(@Param("id") Long id,@Param("start") Long start,@Param("type") Integer type) throws DataAccessException;

Mybatis的 sql 是如下內容:

<select id="clearCache" resultType="int">
  select 1
</select>

這個操作並沒有實質性的資料庫操作,只是為了刪除快取 . 6666,不失為一種辦法....

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。