zoukankan      html  css  js  c++  java
  • 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 ,不失为一种办法....

  • 相关阅读:
    穷举和迭代
    for循环练习题
    case when then else end 用法
    如何将数据库账号(用户)解锁
    比赛安排
    How to spend you day ?
    异常-问题型
    重载和重写的区别
    new关键字的理解-问题型
    源辰项目-1
  • 原文地址:https://www.cnblogs.com/ElEGenT/p/11770408.html
Copyright © 2011-2022 走看看