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

在迁移项目中, 遇到了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();
    }

}
  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值