zoukankan      html  css  js  c++  java
  • 在springboot中使用redis,将数据序列化为json格式

    背景

    在springboot中使用redis缓存结合spring缓存注解,当缓存成功后使用gui界面查看redis中的数据




    原因

    springboot中默认的序列化是jdk提供的 Serializable 方式

    解决方法

    如果想要序列化成json格式的数据,可以自定义一个redis的config类,设置序列化规则即可,如下:

    @Configuration
    public class RedisConfig extends CachingConfigurerSupport {
    
        @Autowired
        private RedisConnectionFactory redisConnectionFactory;
    
    
        @Bean
        public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
            Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<Object>(Object.class);
            ObjectMapper objectMapper = new ObjectMapper();
            objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
            objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
            serializer.setObjectMapper(objectMapper);
    
            RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
            redisTemplate.setConnectionFactory(redisConnectionFactory);
            redisTemplate.setKeySerializer(new StringRedisSerializer());
            redisTemplate.setValueSerializer(serializer);
            redisTemplate.setHashKeySerializer(new StringRedisSerializer());
            redisTemplate.setHashValueSerializer(serializer);
            redisTemplate.afterPropertiesSet();
    
            return redisTemplate;
        }
    
        @Bean
        public RedisCacheManager redisCacheManager(RedisTemplate redisTemplate) {
            RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(redisTemplate.getConnectionFactory());
            RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
                    .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(redisTemplate.getValueSerializer()));
            return new RedisCacheManager(redisCacheWriter, redisCacheConfiguration);
        }
    }
    

    访问接口,成功save,再次查看GUI界面的redis数据


    总结

    • 无论是使用 spring注解 还是 RedisTemplate 都有效果

    如果觉得对你有用,就请点个 推荐 吧!

  • 相关阅读:
    Apache httpd和JBoss构建高可用集群环境
    Ubuntu 14.04下NFS安装配置
    Ubuntu 14.04 安装 JDK 7.0
    Docker第三方项目小结
    Shipyard远程API
    Linux软件管理——yum命令详解
    Quartz集群原理及配置应用
    Rsync原理介绍及配置应用
    python构造wireshark可以解析的LTE空口数据
    A Simple Web Server
  • 原文地址:https://www.cnblogs.com/zhuang229/p/11760234.html
Copyright © 2011-2022 走看看