RedisOMSpringの紹介
RedisとSpringのオブジェクトマッピングなど
Redis OM Springは、ドメインをモデル化し、SpringアプリケーションでRedisにデータを永続化するのに役立つように設計された新しいクライアントライブラリです。ライブラリはオープンソースのRedisで動作しますが、RedisJSONで使用すると、多くの追加のインデックス作成およびクエリ機能を提供します。
Redisは、そのモジュールと組み合わせることで、地球上で最速のデータプラットフォームの1つになります。しかし、その速度を利用するのは必ずしも簡単ではありませんでした。 Redis OM Springは、魅力的な開発者エクスペリエンスを提供します。この投稿では、RedisOMSpringを使用して構築できるものを紹介します。
モチベーション
開発者として、強力でシンプルなテクノロジーに出くわすことはめったにありません。 OSS Redisだけでも、エンタープライズアプリケーションに必要なデータ指向のメッセージングタスクの多くを実行するための多数のデータ構造と関連するコマンドがあります。
同様に、エンタープライズJava開発の世界では、Springは過去18年間、大規模で機能豊富なアプリケーションの構築の複雑さを抑えてきました。この分野では、Redisは驚くべきSpring Data Redisによってサポートされており、OSSRedisと対話するための低レベルと高レベルの両方の抽象化を提供します。
Spring Data Redisを使用する際の課題の1つは、Redisモジュールをサポートしていないことです。ここRedisでは、検索、JSONインデックス作成とクエリ、グラフデータ、時系列データ、サーバー側計算の完全なフレームワーク(Redis Gears)でRedisコアデータ構造を強化する、画期的なRedisモジュールをいくつか開発しています。これらのモジュールを利用し、さらに幅広い機能セットを提供するために、RedisOMSpringを構築しました。
Redis OM Spring
クライアントライブラリのRedisOMファミリは、選択した言語/プラットフォームに慣用的に実装された高レベルの抽象化を提供することを目的としています。現在、Node.js、Python、.NET、およびSpringコミュニティに対応しています。 Redis OM Springを使用すると、開発者はRedisの機能をSpringBootアプリケーションに簡単に追加できます。
具体的には、Redis OM Springは、驚くべきSpring Data Redis(SDR)フレームワーク上に構築された堅牢なリポジトリとカスタムオブジェクトマッピングの抽象化を提供します。
現在のプレビューリリースでは、SpringDataRedisのすべての機能に加えて次の機能が提供されています。
- JavaからJSONへのマッピング
- 強化されたハッシュマッピング
- 自動検索インデックスの生成
- RediSearchに裏打ちされたSpringデータリポジトリ
JavaからJSONへのマッピング
RedisJSONを使用してJavaオブジェクトをRedisに保存されているJSONドキュメントにマッピングするには、
@Documentを使用できます。 注釈。他のSpringDataエンティティマッピングアノテーションと同様に、それをクラス宣言に追加します。たとえば、タイプ
Companyのオブジェクトをマップするとします。 。
@Documentを追加するだけです 以下に示すように:
このクラスの本体にいくつかのアノテーションがあることに気付くかもしれません。
@IdSpring Dataに由来し、
idを宣言します JSONドキュメントを保存するRedisキーとしてのプロパティ。
おそらく、Spring Dataファミリーのライブラリの最も人気のある機能は、宣言型のデータリポジトリです。次の2つの注釈では、RediSearchを使用してJSONドキュメントにインデックスを付けることができます。これは、
RedisDocumentRepositoryを介して公開されます インターフェイス:
空のリポジトリ宣言は、POJOの基本的なCRUD機能/ページ付けと並べ替えを取得するために必要なすべてです。
Redis OM Springは、
@Indexedでアノテーションが付けられたPOJOフィールドを使用します または
@Searchableインデックススキーマを構築します。
Companyの場合 POJOには、「検索可能」という注釈が付けられた名前プロパティがあります。これは、そのフィールドで全文検索機能を利用できることを意味します。これは、スキーマフィールド定義
$.name AS name TEXTに反映されます。 。
一方、フィールドタグには「インデックス可能」という注釈が付けられています。これは、タイプTAGのインデックスフィールドを取得することを意味します。つまり、フィールドの正確な値で会社を検索できます。これも、スキーマフィールドの定義に反映されています。
$.tags[*] AS tags TAG
単純な動的クエリを作成する
おそらく、Redis OM Springの最も魅力的な機能は、実行時にリポジトリインターフェイスからリポジトリ実装を自動的に作成する機能です。適切なフィールドにインデックスが付けられると、追加のコードを記述しなくても、以下のすべてのクエリを実行できるようになります。
リポジトリプロキシには、メソッド名からストア固有のクエリを導出する2つの方法があります。
- メソッド名から直接クエリを取得する。
-
@Query
を使用して手動で定義されたクエリを使用する または@Aggregation
注釈。
リポジトリインターフェースに追加されたいくつかのメソッド宣言を調べてみましょう。
findOneByName
Redis OM Springは、メソッド名とパラメーターを使用して適切なクエリを生成します。メソッドreturntypeを使用して、結果をパッケージ化して返す方法を決定します。
findOneByName
Optional of Companyを返します 。
findOneまた、複数の結果がある場合でも、1つの結果のみが返されることを意味します。ライブラリはメソッド名を解析して、予期されるパラメータの数を決定します。たとえば、
ByNameメソッドの一部は、
nameという名前の単一のパラメーターが必要であることを示しています。 。
findByLocationNear
Redis OM Springは、地理空間データを格納するためのGeoJSONタイプをサポートしています。
nearを使用する クエリのキーワードで、
Pointを期待するようにコードに指示しています
(org.springframework.data.geo.Point)および
Distance (org.springframework.data.geo.Distance)パラメータとして入力します。
リポジトリの使用
他のSpringデータリポジトリと同様に、リポジトリを別のSpringコンポーネントに挿入できます。
まとめ
これは単なるプレビューです RedisOMSpringのリリース。まだまだ構築することがたくさんありますが、今のところ私たちはあなたの助けが必要です! Springアプリケーションにプロジェクトをインストールする方法の詳細については、READMEを確認してください。フィードバック、PR、問題を歓迎します!
-
Redisのパフォーマンスについての考え
単純なキャッシングから数テラバイトサイズのセットアップまで、さまざまなユースケースでRedisを使用している多くの人々や企業と話す特権が与えられているので、私が他の何よりも取り上げるよう求められているトピックの1つはパフォーマンスです。 Redisは、パフォーマンスへのアプローチ方法が異なります。ほとんどではないにしても、多くのデータベースサーバーでパフォーマンスを向上させようとしています。 Redisの目標は、速度を落とさないことです。これは非常に異なるアプローチであり、それを利用するには異なる考え方が必要です。 パフォーマンスメトリクス–レイテンシーは王様ですか? Redisを使用すると
-
FastlyComputeでRedisを使用する
この例では、古いバージョンのFastlyCLIを使用しています。最新バージョンについては、この記事を確認してください。 この投稿では、Fastly Compute@Edgeで実行される簡単なアプリケーションを作成します。アプリケーションはUpstashRedisにアクセスして、ページビューを追跡します。 モチベーション エッジコンピューティングは、近年最もエキサイティングなトレンドの1つです。 CloudflareやFastlyなどのCDNサービスは、ユーザーがエッジインフラストラクチャでアプリケーションを実行できるようにするために開始されました。これは、開発者がグローバルに分散された高