ホームページ データベース Redis リディソンをシリアル化する方法

リディソンをシリアル化する方法

Nov 27, 2019 am 10:00 AM
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入门教程栏目进行学习!

以上がリディソンをシリアル化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

SpringBoot が Redisson を統合して遅延キューを実装する方法 SpringBoot が Redisson を統合して遅延キューを実装する方法 May 30, 2023 pm 02:40 PM

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

分散ロックの王道ソリューション - Redisson 分散ロックの王道ソリューション - Redisson Aug 24, 2023 pm 03:31 PM

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

Redisson キャッシュ テクノロジーについて学ぶ Redisson キャッシュ テクノロジーについて学ぶ Jun 21, 2023 am 09:54 AM

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

Redis フレームワークと Redisson フレームワークの違いと使用シナリオ Redis フレームワークと Redisson フレームワークの違いと使用シナリオ May 11, 2023 pm 03:40 PM

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

Java API開発における分散ロック処理にRedissonを使用する Java API開発における分散ロック処理にRedissonを使用する Jun 17, 2023 pm 09:08 PM

インターネット技術の継続的な発展とアプリケーションシナリオの多様化により、分散アプリケーションは現代のインターネットアプリケーションの標準となっています。分散アプリケーションでは、ノード間のデータ同期とコラボレーションを調整するために、分散ロック メカニズムを使用する必要があります。 Redisson は、Redis テクノロジーに基づく分散ロック フレームワークであり、Java 開発者が開発で分散ロックを使用できるようにする、シンプルで使いやすい API を提供します。この記事では主に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は起動時にマスター/スレーブノードが正常かどうかを検出しますので、基本的にはマスター3台、スレーブ3台のシャード3台であれば問題ありません。ただし、テスト環境にシャードが 1 つ、マスターとスレーブが 1 つずつある場合、または 3 つのマスターがどれも起動できない場合があります。環境に加えて、パスワードの有無にも注意する必要があります。 redisson 構成を手動で挿入します。通常、運用環境にはパスワードがあります。パスワードがある場合は、springboot がパスワードを認識できない可能性があるため、統合を支援するために springboot を使用せずに、手動で redisson 構成を挿入することをお勧めします。

See all articles