将Spring自带的RedisCache保存的值改为json格式

Posted lovoo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将Spring自带的RedisCache保存的值改为json格式相关的知识,希望对你有一定的参考价值。

前言

为了方面在redis管理器察看保存的缓存数据,我们要把原来序列化的数据改为json格式。

在springboot项目中配置代码:

@EnableConfigurationProperties(CacheProperties.class)
@Configuration
@EnableCaching
public class MyCacheConfig 

    // @Autowired
    // public CacheProperties cacheProperties;

    /**
     * 配置文件的配置没有用上
     *
     * @return
     */
    @Bean
    public RedisCacheConfiguration redisCacheConfiguration(CacheProperties cacheProperties) 

        RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig();
        // config = config.entryTtl();
        config = config.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()));
        config = config.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer()));

        CacheProperties.Redis redisProperties = cacheProperties.getRedis();
        //将配置文件中所有的配置都生效
        if (redisProperties.getTimeToLive() != null) 
            config = config.entryTtl(redisProperties.getTimeToLive());
        
        if (redisProperties.getKeyPrefix() != null) 
            config = config.prefixKeysWith(redisProperties.getKeyPrefix());
        
        if (!redisProperties.isCacheNullValues()) 
            config = config.disableCachingNullValues();
        
        if (!redisProperties.isUseKeyPrefix()) 
            config = config.disableKeyPrefix();
        

        return config;
    


配置application.yml

spring: 
  redis:
    host: 192.168.16.149
    port: 6379

  cache:
    type: redis
    redis:
      time-to-live: 360000

在要添加缓存的上面添加 @Cacheable

 @Override
    @Cacheable(value = "category", key = "#root.methodName") //如果缓存中有,方法都不调用
    public List<CategoryEntity> getOneLevelCategories() 
        List<CategoryEntity> entities = baseMapper.selectList(new QueryWrapper<CategoryEntity>().eq("parent_cid", 0));
        return entities;
    

结果如图:

以上是关于将Spring自带的RedisCache保存的值改为json格式的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot系列:Spring Boot集成Spring Cache,使用RedisCache

span是没有value标签的,要向获得标签内部的值改怎么办。

Spring Caching 的 AbstractCacheInvoker doPut() 方法错误调用 RedisCache put() 方法

SpringBoot2集成RedisCache

vue 中父组件值改变子组件数据不变

springboot开启Cache缓存