当前位置: 首页 > news >正文

redisson 使用fastJson2序列化

前因:一个项目:有人用redisTemplete存数据(使用了fastjson2),使用redisson取的时候就会报错。要让redisTemplete与redisson序列化一致

一、自定义序列化器


import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONReader;
import com.alibaba.fastjson2.JSONWriter;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufAllocator;
import io.netty.buffer.ByteBufInputStream;
import io.netty.buffer.ByteBufOutputStream;
import org.redisson.client.codec.Codec;
import org.redisson.client.codec.StringCodec;
import org.redisson.client.handler.State;
import org.redisson.client.protocol.Decoder;
import org.redisson.client.protocol.Encoder;
import org.redisson.codec.JsonJacksonCodec;
import org.springframework.http.codec.json.Jackson2JsonDecoder;
import org.springframework.http.codec.json.Jackson2SmileDecoder;import java.io.IOException;
import java.nio.charset.Charset;/*** @author yh*/
public class FastJson2JsonRedissonSerializer extends StringCodec {public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");private final Encoder encoder = new Encoder() {@Overridepublic ByteBuf encode(Object in) throws IOException {ByteBuf out = ByteBufAllocator.DEFAULT.buffer();try {ByteBufOutputStream os = new ByteBufOutputStream(out);JSON.writeTo(os, in, JSONWriter.Feature.WriteClassName);
//                return JSON.toJSONBytes(in, JSONWriter.Feature.WriteClassName);return os.buffer();} catch (Exception e) {out.release();throw new IOException(e);}}};private final Decoder<Object> decoder = new Decoder<Object>() {@Overridepublic Object decode(ByteBuf buf, State state) throws IOException {return JSON.parseObject(new ByteBufInputStream(buf), Object.class, JSONReader.Feature.SupportAutoType);}};@Overridepublic Decoder<Object> getValueDecoder() {return decoder;}@Overridepublic Encoder getValueEncoder() {return encoder;}}

二、redsson 配置里添加自定义序列化器(RedissonConfiguration)

// 创建fastjson的Redisson序列化器config.setCodec(new FastJson2JsonRedissonSerializer());

三、测试结果

http://www.lryc.cn/news/353054.html

相关文章:

  • Python数据分析常用函数
  • C++ 数据结构算法 学习笔记(32) -五大排序算法
  • 从入门到精通:详解Linux进程管理
  • 【Linux】如何在 Linux 系统中使用 envsubst 来处理 Nginx 配置模板
  • 【LeetCode】438.找到字符串中所有字母异位词
  • 力扣96. 不同的二叉搜索树
  • 哈希表的用途
  • k8s笔记 | 高度调度
  • Rom应用开发遇到得一些小bug
  • Python简介
  • C++完成特色旅游管理信息系统
  • 贵州大学24计算机考研数据速览,国家重点实验室22408复试线285分!贵州大学计算机考研考情分析!
  • 分区4K对齐那些事,你想知道的都在这里
  • 达梦数据库学习笔记
  • 安卓绕过限制直接使用Android/data无需授权,支持安卓14(部分)
  • 【知识蒸馏】多任务模型 logit-based 知识蒸馏实战
  • C:技术面试总结
  • OpenHarmony 实战开发——一文总结ACE代码框架
  • 【数据结构与算法】之堆的应用——堆排序及Top_K问题!
  • 啊哈!算法-第2章-栈、队列、链表
  • 简述 v-if 和 v-show 的区别
  • Linux驱动学习之模块化,参数传递,符号导出
  • RabbitMQ02-RebbitMQ简介及交换器
  • Matlab自学笔记三十:元胞数组的修改、添加、删除和连接
  • 【LeetCode】数组——双指针法
  • react 低代码平台方案汇总
  • oss对象上传文件设置格式
  • 【Linux学习】进程
  • Python数据分析实验四:数据分析综合应用开发
  • 基于51单片机的盆栽自动浇花系统