自定义序列化

3.2.2.自定义序列化

RedisTemplate可以接收任意Object作为值写入Redis:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

只不过写入前会把Object序列化为字节形式,默认是采用JDK序列化,得到的结果是这样的:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

缺点:

  • 可读性差
  • 内存占用较大

我们可以自定义RedisTemplate的序列化方式,代码如下:

@Configuration
public class RedisConfig {

    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory){
        // 创建RedisTemplate对象
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        // 设置连接工厂
        template.setConnectionFactory(connectionFactory);
        // 创建JSON序列化工具
        GenericJackson2JsonRedisSerializer jsonRedisSerializer = 
            							new GenericJackson2JsonRedisSerializer();
        // 设置Key的序列化
        template.setKeySerializer(RedisSerializer.string());
        template.setHashKeySerializer(RedisSerializer.string());
        // 设置Value的序列化
        template.setValueSerializer(jsonRedisSerializer);
        template.setHashValueSerializer(jsonRedisSerializer);
        // 返回
        return template;
    }
}

这里采用了JSON序列化来代替默认的JDK序列化方式。最终结果如图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

整体可读性有了很大提升,并且能将Java对象自动的序列化为JSON字符串,并且查询时能自动把JSON反序列化为Java对象。不过,其中记录了序列化时对应的class名称,目的是为了查询时实现自动反序列化。这会带来额外的内存开销。

相关推荐

  1. Kafka Avro序列之一:使用定义序列

    2024-03-24 20:20:02       46 阅读
  2. 【Kotlin】定义Json反序列

    2024-03-24 20:20:02       32 阅读
  3. 定义redisTemplate实现定义序列

    2024-03-24 20:20:02       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-24 20:20:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-24 20:20:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-24 20:20:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-24 20:20:02       20 阅读

热门阅读

  1. 设计模式-单例模式(模拟面试官八股)

    2024-03-24 20:20:02       23 阅读
  2. 使用 Python 读取 Word 文件

    2024-03-24 20:20:02       19 阅读
  3. LeetCode hot100-16

    2024-03-24 20:20:02       17 阅读
  4. LEETCODE-DAY31

    2024-03-24 20:20:02       18 阅读
  5. MONSD和SSD的区别

    2024-03-24 20:20:02       20 阅读
  6. 新概念英语1:Lesson11学习笔记

    2024-03-24 20:20:02       18 阅读
  7. ChatGPT:提升论文写作能力

    2024-03-24 20:20:02       20 阅读
  8. Rust 语言中 Vec 的元素的删除方法

    2024-03-24 20:20:02       21 阅读
  9. 【深度学习】NestedTensors

    2024-03-24 20:20:02       18 阅读