Skip to content

序列化机制 ​

深入理解Redisson序列化机制的实现,掌握编解码器和对象序列化的原理,理解JSON、Kryo等序列化方式,掌握序列化优化技巧和兼容性处理。

📋 序列化机制概览 ​

Redisson支持多种序列化方式,包括JSON、Kryo、Fst等,每种方式都有其特点。

🎯 一、编解码器 ​

1.1 Codec接口 ​

Codec是Redisson序列化的核心接口:

java
public interface Codec {
    <T> T decode(ByteBuf buf, State state) throws IOException;
    <T> void encode(T in, ByteBuf out) throws IOException;
}

核心方法:

  • encode:将对象序列化到ByteBuf
  • decode:从ByteBuf反序列化对象

1.2 默认编解码器 ​

Redisson默认使用JsonJacksonCodec:

java
public class JsonJacksonCodec implements Codec {
    private final ObjectMapper objectMapper;
    
    @Override
    public <T> T decode(ByteBuf buf, State state) throws IOException {
        return objectMapper.readValue(buf.array(), Object.class);
    }
    
    @Override
    public <T> void encode(T in, ByteBuf out) throws IOException {
        byte[] bytes = objectMapper.writeValueAsBytes(in);
        out.writeBytes(bytes);
    }
}

🎯 二、序列化方式 ​

2.1 JSON序列化 ​

JsonJacksonCodec:

  • 优点:可读性好,兼容性好
  • 缺点:性能一般,体积较大

2.2 Kryo序列化 ​

KryoCodec:

  • 优点:性能高,体积小
  • 缺点:需要注册类

2.3 Fst序列化 ​

FstCodec:

  • 优点:性能高,兼容性好
  • 缺点:依赖Fst库

🎯 三、压缩算法 ​

3.1 Gzip压缩 ​

Redisson支持Gzip压缩,减小序列化后的体积:

压缩实现:

java
public class CompressedCodec implements Codec {
    private final Codec codec;
    
    @Override
    public <T> T decode(ByteBuf buf, State state) throws IOException {
        byte[] compressed = buf.array();
        byte[] decompressed = gzipDecompress(compressed);
        return codec.decode(Unpooled.wrappedBuffer(decompressed), state);
    }
    
    @Override
    public <T> void encode(T in, ByteBuf out) throws IOException {
        ByteBuf temp = Unpooled.buffer();
        codec.encode(in, temp);
        byte[] compressed = gzipCompress(temp.array());
        out.writeBytes(compressed);
    }
}

3.2 Snappy压缩 ​

Redisson支持Snappy压缩,提供更快的压缩速度。

📖 学习资源 ​

视频教程 ​

书籍推荐 ​

  • 《Redis设计与实现》 - 黄健宏
  • 《高性能序列化》 - 相关技术书籍

网站资源 ​

✅ 学习检查清单 ​

  • [ ] 已理解编解码器接口
  • [ ] 已理解JSON序列化
  • [ ] 已理解Kryo序列化
  • [ ] 已理解压缩算法
  • [ ] 已理解序列化优化技巧
  • [ ] 已总结核心知识点

上一章节:分布式服务
下一章节:Netty集成
返回目录:Redisson源码深度解析