Spring-Cache手動清緩存


Spring Cache 手動清Redis緩存

注冊cacheRedisTemplate

將 cache 的 RedisTemplate 注冊為Bean

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

使用cacheRedisTemplate

那么在清除緩存的時候, 可以直接使用 cacheRedisTemplate .

....

@Autowired 
@Qualifier("cacheRedisTemplate") 
var cacheRedisTemplate : RedisTemplate[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 ,不失為一種辦法....


免責聲明!

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



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