码迷,mamicode.com
首页 > 编程语言 > 详细

Spring-Cache手动清缓存

时间:2019-10-31 13:33:12      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:没有   HERE   清除   cal   object   注解   jedis   start   row   

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 ,不失为一种办法....

Spring-Cache手动清缓存

标签:没有   HERE   清除   cal   object   注解   jedis   start   row   

原文地址:https://www.cnblogs.com/ElEGenT/p/11770408.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!