如何在redisson中实现序列化

分类:编程技术 时间:2024-02-20 15:13 浏览:0 评论:0
0
本文通过简单易懂的例子来介绍redisson序列化的方法。代码非常详细。有兴趣的朋友可以参考一下。希望对大家有所帮助。

Redisson

是一个基于 Redis 的 Java 内存数据网格。

Redisson基于NIO的Netty框架,充分利用了Redis键值数据库提供的一系列优势。基于Java实用工具包中的通用接口,Redisson为用户提供了一系列功能。分布式功能的通用工具类。这使得原本用于协调单机多线程并发程序的工具包获得了协调分布式多机多线程并发系统的能力,大大降低了设计和开发大规模分布式系统的难度。同时,结合各种特色分布式服务,进一步简化了场景。分布式环境中程序之间的协作。

兼容Redis 2.6+和JDK 1.6+,使用Apache License 2.0授权协议,阅读wiki了解更多使用信息

序列化

Redisson的对象编码类用于对对象进行序列化和反序列化,以在Redis中读取和存储对象。

Redisson 默认的编码器是 JsonJacksonCodec。 JsonJackson序列化双向引用的对象时,会出现死循环异常。 fastjson检查出双引用后,会自动将其替换为引用字符$ref并终止循环。

就我而言,我序列化了一项服务。这个服务已经被spring托管了,同时也被注入到另一个服务中。使用fastjson可以正常序列化到redis,但是 JsonJackson 会抛出死循环异常。

为了让序列化的内容可见,不需要重新dission她内置的二进制编码器并自己实现编码器:

import com.alibaba.fastjson.JSON;import com.alibaba.fastjson .serializer.SerializerFeature;导入io.netty.buffer.ByteBuf;导入io.netty.buffer.ByteBufAllocator;导入io.netty.buffer.ByteBufInputStream;导入io.netty.buffer.ByteBufOutputStream;导入org.redisson.client.codec。 BaseCodec;导入 org.redisson.client.protocol.Decoder;导入 org.redisson .client.protocol.Encoder;导入 java.io.IOException;公共类 FastjsonCodec 扩展 BaseCodec { 私有最终编码器编码器 = in -> { ByteBuf out = ByteBufAllocator .DEFAULT.buffer();尝试 { ByteBufOutputStream os = new ByteBufOutputStream(out) ; JSON.writeJSONString(os, in,SerializerFeature.WriteClassName);返回 os.buffer(); } catch (IOException e) { out.release();扔 e; } catch (异常 e) { out.release();抛出新的 IOException(e); } };私有最终 Decoder 解码器 = (buf, state) -> JSON.parseObject(new ByteBufInputStream(buf), Object.class); @Override public Decoder getValueDecoder() { 返回解码器; } @Override public Encoder getValueEncoder() { return 编码器; }}

这是分享redisson的序列化方法。希望使用上面的内容能够对大家有一定的帮助,可以学到更多的知识。如果您觉得文章不错,可以分享出去,让更多的人看到。

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > 如何在redisson中实现序列化

用户评论