首頁 資料庫 Redis redisson如何序列化

redisson如何序列化

Nov 27, 2019 am 10:00 AM
redisson

redisson如何序列化

Redisson 是一個在Redis 的基礎上實現的Java 駐記憶體資料網格,相較於暴露底層操作的Jedis, Redisson提供了一系列的分散式的Java 常用對象,也提供了許多分散式服務。         (建議學習:Redis視訊教學

序列化

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;
 }
}
登入後複製

更多Redis相關技術文章,請造訪Redis入門教學欄位進行學習!

以上是redisson如何序列化的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

SpringBoot怎麼整合Redisson實現延遲隊列 SpringBoot怎麼整合Redisson實現延遲隊列 May 30, 2023 pm 02:40 PM

使用場景1、下單成功,30分鐘未支付。支付超時,自動取消訂單2、訂單簽收,簽收後7天未進行評估。訂單超時未評價,系統預設好評3、下單成功,商家5分鐘未接單,訂單取消4、配送超時,推播簡訊提醒…對於延時比較長的場景、即時性不高的場景,我們可以採用任務調度的方式定時輪詢處理。如:xxl-job今天我們採

Java Redis Redisson設定實例分析 Java Redis Redisson設定實例分析 Apr 25, 2023 am 08:19 AM

所需的Mavenorg.springframework.bootspring-boot-starter-data-redisio.lettucelettuce-coreredis.clientsjedisorg.springframework.sessionspring-session-data-redisorg.redissonredisson3.17.5application-redis。 6379密碼

分散式鎖中的王者方案 - Redisson 分散式鎖中的王者方案 - Redisson Aug 24, 2023 pm 03:31 PM

如果你之前是在用 Redis 的話,那使用 Redisson 的話將會事半功倍,Redisson 提供了使用 Redis的最簡單和最便捷的方法。 Redisson的宗旨是促進使用者對 Redis 的關注分離(Separation of Concern),讓使用者能夠將精力更集中地放在處理業務邏輯上。

了解 Redisson 快取技術 了解 Redisson 快取技術 Jun 21, 2023 am 09:54 AM

Redisson是一種基於Redis的Java應用程式快取解決方案。它提供了許多有用功能,使得在Java應用程式中使用Redis作為快取變得更加方便和高效。 Redisson提供的快取功能包括:1.分散式映射(Map):Redisson提供了一些用於建立分散式映射的API。這些映射可以包含鍵值對、哈希表項或對象,它們可以支援在多個節點之間共

Redis與Redisson框架的差異與使用場景 Redis與Redisson框架的差異與使用場景 May 11, 2023 pm 03:40 PM

Redis和Redisson是現代化的記憶體資料儲存和分散式資料儲存中重要的兩個工具。 Redis是一個開源的記憶體資料庫,它支援不同的資料結構,例如字串、列表、哈希表、集合等。而Redisson是一個用Java語言編寫的分散式資料服務框架,它可以輕鬆地將Java物件映射到分散式儲存中。 Redis和Redisson有一些相同的使用場景,例如:快取:Redis和R

Java API 開發中使用 Redisson 進行分散式鎖定處理 Java API 開發中使用 Redisson 進行分散式鎖定處理 Jun 17, 2023 pm 09:08 PM

隨著互聯網技術的不斷發展和應用場景的多樣化,分散式應用成為了現代互聯網應用的標配。在分散式應用中,為了協調各節點之間的資料同步和協作,需要使用分散式鎖定機制。而Redisson是一款基於Redis技術實現的分散式鎖定框架,它提供了簡單易用的API,方便Java開發者在開發中使用分散式鎖定。本文主要介紹JavaAPI開發中使用Redisson進行分散式鎖定處

Java後端開發:使用Redisson實作分散式API鎖 Java後端開發:使用Redisson實作分散式API鎖 Jun 17, 2023 am 10:40 AM

隨著網路應用的不斷增加和使用者量的不斷增大,分散式系統的需求越來越高。為了確保分散式系統的穩定性和資料一致性,鎖的使用是不可或缺的。然而,在分散式系統中,鎖的實現具有一定的難度和複雜性。傳統的鎖實現方式難以滿足高並發和高可用的需求。因此,本文將介紹如何使用Redisson實現分散式API鎖,以解決分散式系統中的鎖定問題。 Redisson是一個基於Redis實現

spring boot如何整合redisson spring boot如何整合redisson May 14, 2023 pm 07:46 PM

整合及注意事項redisson支援redis環境,單機、叢集、哨兵、雲端等。這裡就講一下叢集模式需要注意的地方,redisson啟動會偵測master/slave節點是否正常,一般來說3分片3主3從是沒有什麼問題的,但是如果測試環境1分片1主1從或者3主都是啟動不了的。除了環境要注意,還有註意相容有無密碼的情況。手動注入redisson配置一般情況下,生產環境都是有密碼的。有密碼的話,建議手動注入redisson配置,不用springboot來幫你集成,因為可能springboot識別不了密碼。

See all articles