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中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

熱門話題

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

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

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

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

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

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

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

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