jedis换成redisson, map数据转json不一致问题

发布时间:2024年01月17日

在迁移项目中, 遇到了map结构存储的json文本不一致问题

A项目使用的是jedis
B项目使用的是redisson

因此B项目需要使用自定义的编码器, json序列化框架是springBoot自带的jackson

public <T> RMap<String, T> getRMap(RedisKey redisKey, Class<T> clazz, String key) {
    RMap<String, T> mapCache = redissonClient.getMap(key, new MyCodec(clazz));
    return mapCache;
}

public class MyCodec extends BaseCodec {
    private TypedJsonJacksonCodec typedJsonJacksonCodec;
    private StringCodec stringCodec;

    public MyCodec(Class<?> valueClass) {
        typedJsonJacksonCodec = new TypedJsonJacksonCodec(valueClass);
        stringCodec = new StringCodec();
    }

    @Override
    public Decoder<Object> getValueDecoder() {
        return stringCodec.getValueDecoder();
    }

    @Override
    public Encoder getValueEncoder() {
        return stringCodec.getValueEncoder();
    }

    @Override
    public Decoder<Object> getMapValueDecoder() {
        return typedJsonJacksonCodec.getValueDecoder();
    }

    @Override
    public Encoder getMapValueEncoder() {
        return typedJsonJacksonCodec.getValueEncoder();
    }

    @Override
    public Decoder<Object> getMapKeyDecoder() {
        return stringCodec.getValueDecoder();
    }

    @Override
    public Encoder getMapKeyEncoder() {
        return stringCodec.getValueEncoder();
    }

}
文章来源:https://blog.csdn.net/zx1323/article/details/135656831
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。