RedisOM.NETの紹介
.NETおよびRedis用の流暢なAPIおよびオブジェクトモデル
Redisは、スピードとシンプルさという2つの理由から、何百万もの開発者に愛されている素晴らしいテクノロジーです。 Redisは、プログラマーがすでに知っているデータ構造に論理的に編成された直感的なネイティブインターフェイスを提供します。さらに、これらの構造は使いやすく、非常に最適化されています。 .NET用の新しいクライアントライブラリであるRedisOMのリリースで私たちが取り組んでいるのは、スピードとシンプルさのこの究極のブレンドです。
Redis OM .NETとは何ですか?
Redis OMは、Redisのオブジェクトマッピングなどです。 Redis OMの背後にある動機は、「開発者がすべてのRedisコマンドを学習せずに、Redisから驚くべきレバレッジを得るにはどうすればよいか」という質問に答えることです。この最初のプレビューリリースでは、「Redisでドメインオブジェクトを保存して検索するにはどうすればよいですか?」という質問に対処することを目指しています。 Redis OM .NETのプレビューリリースは、オブジェクトマッパー、セカンダリインデックスビルダー、および単純化された強力なクエリビルダーです。これらはすべて、Redisを使用してドメインオブジェクトを保存および検索できるようにすることを目的としています。
Redisモジュール
Module APIは、Redisのゲームチェンジャーです。モジュールは、Redisにいくつかの重要な機能を提供しながら、プラットフォームに非常に大きな柔軟性を追加します。特に、RedisJSONは、特にセカンダリインデックス作成とドキュメントモデリングに関して、膨大な量の機能のロックを解除します。 Redis OMはコアRedisとうまく連携しますが、RedisJSONを追加すると、Redis OMは本当に大きな進歩を遂げ、RedisJSONを最大限に活用して、オブジェクトをモデリングし、Redisでクエリを実行するためのリッチで強力なAPIを作成します。
機能
Redis OM .NETのプレビューバージョンには、次の4つの主要な機能があります。
- オブジェクトモデリング
- インデックスの作成
- 流暢なクエリ
- 流暢な集計
仕組み
Redis OMを起動して実行する前に、プロジェクトにパッケージをインストールする必要があります。これを行うには、
dotnet add package Redis.OMを実行するだけです。 。 Redis OMライブラリ内のプライマリ接続ロジックは、
RedisConnectionProviderに存在します 。このプロバイダーは、Redisとの通信に使用できる3つの異なるオブジェクトへのアクセスを提供します。
-
IRedisConnection
Execute
を使用してRedisと直接インターフェースできます およびExecuteAsync
メソッド。 -
RedisCollection<T>
一般的に型指定されたオブジェクトのコレクションです。このインターフェースは、流暢なクエリAPIを提供します。 -
RedisAggregationSet<T>
FluentAPIを使用してRedisで集約パイプラインを構築および実行できます。
Redisへの接続
ASP.NETCoreでRedisOMをRedisに接続するには、
RedisConnectionProviderのインスタンスを挿入する必要があります シングルトンとしてのインスタンス。これを行うには、RedisURIを使用します。 .NET 6を使用している場合、これは
program.csを開くことを意味します ファイルと追加:
Startup.csファイルを使用する.NET5の場合、
Startup.ConfigureServicesに以下を追加できます。 :
オブジェクトのモデリングと検索
RedisJSONを使用すると、JSONオブジェクトをRedisにネイティブに保存し、それらのオブジェクトをクエリできます。ただし、JSONをクエリするには、最初にインデックスを定義する必要があります。このプロセスを簡単にするために、Redis OM .NETに宣言型モデルを導入し、宣言型インターフェイスを介してこれらのインデックスを定義できるようにしました。 Redisに格納するクラスを宣言し、そのプロパティにインデックスを付ける場合は、クラスを
Documentで装飾します。 属性を作成し、個々のプロパティを
Indexedでドレスアップします または
Searchable属性。
Indexed
Searchableに対して、標準インデックスを意味します 文字列にのみ適用され、プロパティが全文検索でクエリ可能になることを意味します。次に、新しく装飾されたタイプを
IRedisConnection.CreateIndexに渡すことで、Redisでインデックスを作成できます。 方法。したがって、たとえば、インデックスを使用してCustomerクラスを宣言する場合は、次のようにします。
クエリ
インデックスを作成すると、
RedisCollection<T>を使用できるようになります Redisでオブジェクトをクエリします。したがって、JohnをCustomerオブジェクトとしてRedisに保存していた場合は、次のようにクエリを実行できます。
範囲クエリも簡単に実行できます。たとえば、定年に達していないすべての顧客を見つけましょう。
RedisCollectionを使用 また、RedisJSONを使用すると、LINQで通常行うように、リッチで複雑なクエリを作成できます。RedisOMは、Redisのクエリ言語への翻訳を管理します。
アグリゲーション
クエリに加えて、Redis Aggregationsを使用して、あらゆる種類のことを実行できる集計パイプラインを構築できます。たとえば、各顧客の3歳の年齢を知りたい場合、
Apply内で簡単な算術演算を使用して調べることができます。 式。Redisで適切にフォーマットされた集約パイプラインに変換されます:
レコードをグループ化して、それらの要約統計量を計算することもできます。したがって、顧客を名前でグループ化する場合は、要約統計量を計算できます。たとえば、平均年齢を計算する方法は次のとおりです。
まとめ
これは、Redis OMfor.NETの機能の概要です。詳細については、チュートリアルを確認してAPIドキュメントを確認してください。間もなくRedis.OMに機能を追加する予定です。そのために、コミュニティからのフィードバックをお待ちしています。是非、お試しください。問題を見つけたり、ライブラリに追加してほしいものを考えたりした場合は、GitHubで問題を開いてください。そして当然、私たちは常にコミュニティからの貢献が大好きなので、PRはいつでも歓迎です:)
-
Redisのパフォーマンスについての考え
単純なキャッシングから数テラバイトサイズのセットアップまで、さまざまなユースケースでRedisを使用している多くの人々や企業と話す特権が与えられているので、私が他の何よりも取り上げるよう求められているトピックの1つはパフォーマンスです。 Redisは、パフォーマンスへのアプローチ方法が異なります。ほとんどではないにしても、多くのデータベースサーバーでパフォーマンスを向上させようとしています。 Redisの目標は、速度を落とさないことです。これは非常に異なるアプローチであり、それを利用するには異なる考え方が必要です。 パフォーマンスメトリクス–レイテンシーは王様ですか? Redisを使用すると
-
FastlyComputeでRedisを使用する
この例では、古いバージョンのFastlyCLIを使用しています。最新バージョンについては、この記事を確認してください。 この投稿では、Fastly Compute@Edgeで実行される簡単なアプリケーションを作成します。アプリケーションはUpstashRedisにアクセスして、ページビューを追跡します。 モチベーション エッジコンピューティングは、近年最もエキサイティングなトレンドの1つです。 CloudflareやFastlyなどのCDNサービスは、ユーザーがエッジインフラストラクチャでアプリケーションを実行できるようにするために開始されました。これは、開発者がグローバルに分散された高