亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

redisson實現序列化的方法

發布時間:2020-06-23 21:10:11 來源:億速云 閱讀:1696 作者:元一 欄目:關系型數據庫

這篇文章運用簡單易懂的例子給大家介紹redisson實現序列化的方法,代碼非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

Redisson

是架設在Redis基礎上的一個Java駐內存數據網格(In-Memory Data Grid)。

Redisson在基于NIO的Netty框架上,充分的利用了Redis鍵值數據庫提供的一系列優勢,在Java實用工具包中常用接口的基礎上,為使用者提供了一系列具有分布式特性的常用工具類。使得原本作為協調單機多線程并發程序的工具包獲得了協調分布式多機多線程并發系統的能力,大大降低了設計和研發大規模分布式系統的難度。同時結合各富特色的分布式服務,更進一步簡化了分布式環境中程序相互之間的協作。

兼容 Redis 2.6+ and JDK 1.6+,使用Apache License 2.0授權協議,閱讀 wiki 來獲取更多使用信息

序列化

Redisson的對象編碼類是用于將對象進行序列化和反序列化,以實現對該對象在Redis里的讀取和存儲。

由Redisson默認的編碼器為JsonJacksonCodec,JsonJackson在序列化有雙向引用的對象時,會出現無限循環異常。而fastjson在檢查出雙向引用后會自動用引用符$ref替換,終止循環。

在我的情況中,我序列化了一個service,這個service已被spring托管,而且和另一個service之間也相互注入了,用fastjson能 正常序列化到redis,而JsonJackson則拋出無限循環異常。

為了序列化后的內容可見,所以不用redission其他自帶的二進制編碼器,自行實現編碼器:

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
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.BaseCodec;
import org.redisson.client.protocol.Decoder;
import org.redisson.client.protocol.Encoder;

import java.io.IOException;

public class FastjsonCodec extends BaseCodec {

 private final Encoder encoder = in -> {
 ByteBuf out = ByteBufAllocator.DEFAULT.buffer();
 try {
 ByteBufOutputStream os = new ByteBufOutputStream(out);
 JSON.writeJSONString(os, in,SerializerFeature.WriteClassName);
 return os.buffer();
 } catch (IOException e) {
 out.release();
 throw e;
 } catch (Exception e) {
 out.release();
 throw new IOException(e);
 }
 };

 private final Decoder<Object> decoder = (buf, state) ->
 JSON.parseObject(new ByteBufInputStream(buf), Object.class);

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

 @Override
 public Encoder getValueEncoder() {
 return encoder;
 }
}

關于redisson實現序列化的方法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

四会市| 新宾| 准格尔旗| 太和县| 彰化县| 甘南县| 团风县| 扶沟县| 阳信县| 鄂伦春自治旗| 伊吾县| 千阳县| 都兰县| 信宜市| 沈阳市| 郴州市| 麦盖提县| 东至县| 桃源县| 富平县| 库车县| 卓资县| 司法| 江山市| 铁岭市| 苗栗县| 西充县| 竹山县| 土默特右旗| 崇州市| 新兴县| 永康市| 武山县| 镇雄县| 克什克腾旗| 土默特左旗| 高雄市| 家居| 河南省| 大荔县| 延寿县|