Spring Boot2.X与SpringBoot1.X配置Redis缓存的区别以及JSON格式保存到Redis中所遇到的问题

SpringBoot1.X配置RedisCacheManager

   @Bean
    public RedisTemplate<Object, Employee> empRedisTemplate(
            RedisConnectionFactory redisConnectionFactory)
            throws UnknownHostException {
        RedisTemplate<Object, Employee> template = new RedisTemplate<Object, Employee>();
        template.setConnectionFactory(redisConnectionFactory);
        Jackson2JsonRedisSerializer<Employee> ser = new Jackson2JsonRedisSerializer<Employee>(Employee.class);
        template.setDefaultSerializer(ser);
        return template;
    }
   //CacheManagerCustomizers可以来定制缓存的一些规则
    @Primary  //将某个缓存管理器作为默认的
    @Bean
    public RedisCacheManager employeeCacheManager(RedisTemplate<Object, Employee> empRedisTemplate){
        RedisCacheManager cacheManager = new RedisCacheManager(empRedisTemplate);
        //key多了一个前缀

        //使用前缀,默认会将CacheName作为key的前缀
        cacheManager.setUsePrefix(true);

        return cacheManager;
    }

SpringBoot2.X配置RedisCacheManager

 @Bean
   public RedisCacheManager employeeCacheManager(RedisConnectionFactory redisConnectionFactory){
       //创建Redis的序列化对象
       RedisSerializer<String> redisSerializer = new StringRedisSerializer();
       //使用Redis的模板配置json格式的对象
       RedisTemplate<Object, Employee> template = new RedisTemplate<>();
       template.setConnectionFactory(redisConnectionFactory);
       //创建redis使用json格式保存对象
       Jackson2JsonRedisSerializer serializer = new Jackson2JsonRedisSerializer<Employee>(Employee.class);
       template.setDefaultSerializer(serializer);

       //配置序列化
       RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
               .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer))
               .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(serializer));
           //redisConnectionFactory.usePrefix(true);
       //创建RedisCacheManager缓存器对象
       RedisCacheManager redisCacheManager = RedisCacheManager.builder(redisConnectionFactory).cacheDefaults(redisCacheConfiguration).build();
       return redisCacheManager;
   }

Redis整合SpringBoot在保存对象数据的时候,默认的是使用jdk的序列化操作,如果需要保存json格式对象,则我们需要使用 jackson2JsonRedisSerializer对象进行操作

在这里插入图片描述
缓存的数据能存入redis;
* 第二次从缓存中查询就不能反序列化回来;
* 存的是dept的json数据;CacheManager默认使用RedisTemplate<Object, Employee>操作Redis,因此我们需要再为部门再定制一个缓存管理
*

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值