91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

和田县| 西昌市| 华容县| 平陆县| 和林格尔县| 明溪县| 荥经县| 沙洋县| 奉贤区| 道真| 枣阳市| 土默特左旗| 屯留县| 怀柔区| 湖南省| 浮山县| 大邑县| 平山县| 永胜县| 安庆市| 黔江区| 黔东| 盖州市| 汨罗市| 仁怀市| 祥云县| 奎屯市| 读书| 尼勒克县| 黄骅市| 观塘区| 甘泉县| 天门市| 台安县| 江达县| 安丘市| 沈丘县| 裕民县| 台前县| 襄垣县| 浦江县|