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

  • 相关阅读:
    java程序员裸机配置
    安装库
    自定义脚本模板
    Oracle数据库触发器简单案例
    Oracle数据库按正则切割字符串
    Oracle查询一张表的所有字段
    Oracle数据库系统表
    Oracle设置最大连接数
    Oracle博客参考教程
    区间dp [H
  • 原文地址:https://www.cnblogs.com/ElEGenT/p/11770408.html
Copyright © 2011-2022 走看看