--开启缓存支持,配置RedisTemplate,缓存到java虚拟机而非Redis,redis支持缓存过期时间,redis指定缓存超时时间

时间:2025-03-22 08:04:35
@Configuration
@EnableCaching  //开启缓存支持
public class RedisConfig extends CachingConfigurerSupport{
    @Resource
    private LettuceConnectionFactory lettuceConnectionFactory;
    
    //@description 自定义的缓存key的生成策略,若想使用这个key 只需要将注解上keyGenerator的值设置为keyGenerator即可
    @Override
    @Bean
    public KeyGenerator keyGenerator(){
        return new KeyGenetator(){
            @Override
            public Object generate(Object target,Method method,Object... params){
                StringBuffer sb = new StringBuffer();
                (().getName());
                (());
                for(Object obj: params){
                       (());
                }
                return ();
            }
        };
    }
    //RedisTemplate配置
    @Beam
    public RedisTemplate<String,Obejct> redisTemplate(LettuceConnectionFactory lettuceConnectionFactory){
        //设置序列化
        Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>();
        ObjectMapper om = new ObjectMapper();
        (,);
        (DefaultTyping.NON_FINAL);
        (om);
        //配置redisTemplate
        ReidsTemplate<String,Object> redisTemplate = new RedisTemplate<>();
        (LettuceConnectionFactory);
        RedisSerializer<?> stringSerializer = new StringRedisSerializer();
        (StringSerializer);//key序列化
        (jackson2JsonRedisSerializer); //value序列化
        (stringSerializer);//Hash key序列化
        (jackson2JsonRedisSerializer); //hash value 序列化
        return redisTemplate;
    }
    //此处的缓存到java虚拟机内存,非redis
    @Override
    @Bean
    public CacheManager cacheManager(){
        SimpleCacheManager cacheManager = new SimpleCacheManager();
        List<ConcurrentMapCache> list = new ArrayList<>();
        (new ConcurrentMapCache(name:"dictCache"));
        (new ConcurrentMapCache(name:"jeecgDemo"));
        (new ConcurrentMapCache(name:"permission"));
        (list);
        ();
        return cacheManager;
    }
    //redis缓存支持设置缓存过期事件
    @Bean
    public RedisCacheManager redisCacheManager(RedisConnectionFactory redisConnectionFactory){
        return new RedisCacheManager(
           (redisConnectionFactory),
           this.getRedisCacheConfigurationWithTt1(second:3600),//3600秒,默认策略,未配置的key会使用这个
            () //指定key 策略
         );
    }
    //指定redis缓存超时时间
    private Map<String,RedisChcheConfiguration> getRedisCacheConfigruationMap(){
        Map<Stirng,RedisCacheConfiguration> redisCacheConfigurationMap = new
        HashMap<>();
        ("dictTableCache",this.getRedisCacheConfigurationWithTt1(seconds:600));//600秒表数据字典只缓存10分钟
        return redisCacheConfigurationMap;
    }
    private RedisCacheConfiguration getRedisCacheConfigurationWithTt1(Integet seconds){
           Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>();
            ObjectMapper om = new ObjectMapper();
            (,);
            (.NON_FINAL);
            (om);
            
            RedisCacheConfiguration redisCacheConfiguration = ();
            redisCacheConfiguration = ((jackson2JsonRedisSerializer)).entryTtl((seconds));
            return redisCacheConfiguration; 
    }

}

记事本纯手写,应该有很多不对的地方;