リディソンをシリアル化する方法
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入门教程栏目进行学习!
以上がリディソンをシリアル化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









使用シナリオ 1. 注文は正常に行われましたが、支払いが 30 分以内に行われませんでした。支払いがタイムアウトになり、注文が自動的にキャンセルされました 2. 注文に署名があり、署名後 7 日間評価が行われませんでした。注文がタイムアウトして評価されない場合、システムはデフォルトでプラスの評価を設定します 3. 注文は正常に行われます。販売者が 5 分間注文を受け取らない場合、注文はキャンセルされます。 4. 配送がタイムアウトします。 SMS リマインダーをプッシュします... 遅延が長く、リアルタイム パフォーマンスが低いシナリオでは、タスク スケジュールを使用して定期的なポーリング処理を実行できます。例: xxl-job 今日は選択します

必要なMavenorg.springframework.bootspring-boot-starter-data-redisio.lettucelettuce-coreredis.clientsjedisorg.springframework.sessionspring-session-data-redisorg.redissonredisson3.17.5application-redis.ymlspring:redis:host:106.12.174.220port: 6379パスワード

以前に Redis を使用していた場合は、Redisson を使用すると、半分の労力で 2 倍の結果が得られます。Redisson は、Redis を使用する最も簡単で便利な方法を提供します。 Redisson の目的は、ユーザーがビジネス ロジックの処理により集中できるように、Redis からユーザーの関心事の分離 (Separation of Concern) を促進することです。

Redisson は、Java アプリケーション用の Redis ベースのキャッシュ ソリューションです。 Java アプリケーションで Redis をキャッシュとして使用することをより便利かつ効率的にするための多くの便利な機能が提供されます。 Redisson が提供するキャッシュ機能には以下が含まれます。 1. 分散マッピング (マップ): Redisson は、分散マップを作成するための API をいくつか提供します。これらのマップには、キーと値のペア、ハッシュ エントリ、またはオブジェクトを含めることができ、複数のノード間での共有をサポートできます。

Redis と Redisson は、最新のインメモリ データ ストレージと分散データ ストレージにおける 2 つの重要なツールです。 Redis は、文字列、リスト、ハッシュ テーブル、セットなどのさまざまなデータ構造をサポートするオープン ソースのメモリ内データベースです。 Redisson は Java 言語で書かれた分散データ サービス フレームワークで、Java オブジェクトを分散ストレージに簡単にマッピングできます。 Redis と Redisson には、次のような同じ使用シナリオがあります。 キャッシュ: Redis と R

インターネット技術の継続的な発展とアプリケーションシナリオの多様化により、分散アプリケーションは現代のインターネットアプリケーションの標準となっています。分散アプリケーションでは、ノード間のデータ同期とコラボレーションを調整するために、分散ロック メカニズムを使用する必要があります。 Redisson は、Redis テクノロジーに基づく分散ロック フレームワークであり、Java 開発者が開発で分散ロックを使用できるようにする、シンプルで使いやすい API を提供します。この記事では主にJavaAPI開発における分散ロック処理におけるRedissonの利用について紹介します。

インターネット アプリケーションが増加し続け、ユーザー数が増加し続けるにつれて、分散システムに対する需要はますます高まっています。分散システムの安定性とデータの一貫性を確保するには、ロックの使用が不可欠です。ただし、分散システムでは、ロックの実装は難しく、複雑です。従来のロック実装方法では、高い同時実行性と高可用性の要件を満たすことが困難です。したがって、この記事では、分散システムにおけるロックの問題を解決するために、Redisson を使用して分散 API ロックを実装する方法を紹介します。 Redisson は Redis に基づいた実装です

統合と注意事項 redisson は、redis 環境、スタンドアロン、クラスター、センチネル、クラウドなどをサポートします。ここでクラスタモードの注意点についてお話しますが、Redissonは起動時にマスター/スレーブノードが正常かどうかを検出しますので、基本的にはマスター3台、スレーブ3台のシャード3台であれば問題ありません。ただし、テスト環境にシャードが 1 つ、マスターとスレーブが 1 つずつある場合、または 3 つのマスターがどれも起動できない場合があります。環境に加えて、パスワードの有無にも注意する必要があります。 redisson 構成を手動で挿入します。通常、運用環境にはパスワードがあります。パスワードがある場合は、springboot がパスワードを認識できない可能性があるため、統合を支援するために springboot を使用せずに、手動で redisson 構成を挿入することをお勧めします。
