Redisson配置Codec等
2024-02-22 本文已影响0人
Master大屎
Redisson集成进入到项目后,默认使用的是
<code>org.redisson.codec.MarshallingCodec</code>编码器,此编码器跟操作系统的编码有关,会导致不同的服务器存储的内容编码不一致,直接报错,因此需要选择其他的编码器.Redisson默认的编码器如下:
参考官方文档 https://github.com/redisson/redisson/wiki/4.-Data-serialization
Codec class name | Description |
---|---|
org.redisson.codec.Kryo5Codec |
Kryo 5 binary codec(Android compatible) Default codec |
org.redisson.codec.KryoCodec |
Kryo 4 binary codec |
org.redisson.codec.JsonJacksonCodec |
Jackson JSON codec.Stores type information in @class field (Android compatible) |
org.redisson.codec.TypedJsonJacksonCodec |
Jackson JSON codec which doesn't store type id (@class field) during encoding and doesn't require it for decoding |
org.redisson.codec.AvroJacksonCodec |
Avro binary json codec |
org.redisson.codec.ProtobufCodec |
Protobuf codec |
org.redisson.codec.SmileJacksonCodec |
Smile binary json codec |
org.redisson.codec.CborJacksonCodec |
CBOR binary json codec |
org.redisson.codec.MsgPackJacksonCodec |
MsgPack binary json codec |
org.redisson.codec.IonJacksonCodec |
Amazon Ion codec |
org.redisson.codec.SerializationCodec |
JDK Serialization binary codec (Android compatible) |
org.redisson.codec.LZ4Codec |
LZ4 compression codec.Uses Kryo5Codec for serialization by default |
org.redisson.codec.LZ4CodecV2 |
LZ4 Apache Commons compression codec. |
Uses Kryo5Codec for serialization by default | |
org.redisson.codec.SnappyCodecV2 |
Snappy compression codec based on snappy-java project. |
Uses Kryo5Codec for serialization by default | |
org.redisson.codec.MarshallingCodec |
JBoss Marshalling binary codec |
Deprecated! | |
org.redisson.client.codec.StringCodec |
String codec |
org.redisson.client.codec.LongCodec |
Long codec |
org.redisson.client.codec.ByteArrayCodec |
Byte array codec |
org.redisson.codec.CompositeCodec |
Allows to mix different codecs as one |
项目中,采用的是redisson-spring-boot-starter集成,也引入了spring-data-redis,参考官方配置https://github.com/redisson/redisson/tree/master/redisson-spring-boot-starter
本项目为了不打破原有的redis配置,并未采用spring.redis.redisson这种配置,而是手动增加了redisson中提供的额外配置接口,实现此接口并注册成为bean后,可以直接设置额外的redisson配置
import org.redisson.config.Config;
import org.redisson.spring.starter.RedissonAutoConfigurationCustomizer;
import org.springframework.stereotype.Component;
@Component
public class YourRedissonAutoConfigurationCustomizer implements RedissonAutoConfigurationCustomizer {
@Override
public void customize(Config cfg) {
//cfg.setCodec(new org.redisson.codec.FstCodec());
cfg.setCodec(new org.redisson.codec.SerializationCodec());
}
}
包括NameMapper也可以通过此方法来配置。原理可以查看<code>RedissonAutoConfiguration</code>实现代码