動作中のRediSearch
Redisには、単純な文字列からRedis Streamsなどの強力な抽象化まで、さまざまなデータ構造のセットがあります。ネイティブデータ型には長い時間がかかる場合がありますが、回避策が必要になる可能性のある特定のユースケースがあります。 1つの例は、キーベースの検索/ルックアップを超えてより豊富なクエリ機能を実現するために、Redisでセカンダリインデックスを使用する必要があることです。並べ替えられたセットやリストなどを使用して作業を完了することはできますが、いくつかのトレードオフを考慮する必要があります。
RediSearchを入力してください! Redisモジュールとして利用可能なRediSearchは、ファーストクラスのセカンダリインデックスエンジンのおかげで、柔軟な検索機能を提供します。全文検索、オートコンプリート、地理的索引付けなどの強力な機能を提供します。
このブログ投稿では、RediSearchの機能を実証するために、RediSearch Goクライアントを使用して構築されたGoサービスを利用して、Azure CacheforRedisでRediSearchを使用する方法の実際的な例を示しています。ツイートをリアルタイムで取り込み、RediSearchを使用して柔軟にクエリできる一連のアプリケーションを提供するように設計されています。
具体的には、次の方法を学習します。
- RediSearchインデックスを操作する
- TEXT、NUMERIC、TAGなどのさまざまなRediSearchデータ型を使用します
- RediSearch機能を表示するアプリケーションを構築する方法
- いくつかのコマンドを使用してサービスコンポーネントをAzureにデプロイする方法
- RediSearchにクエリを実行してツイートデータを分析します
アプリケーションの概要
前述のように、サンプルサービスでは、ツイートをリアルタイムで利用し、RediSearchを介してクエリを実行できるようにします。
2つのコンポーネントがあります:
- 消費者/インデクサー: Twitter Streaming APIから読み取り、インデックスを作成し、ツイートデータが到着すると(Redisハッシュで)継続的に追加します。
- 検索サービス: RediSearchクエリ構文を使用してツイートを検索できるRESTAPI。
この時点で、ソリューションの動作を確認できるように、ソリューションを起動して実行する方法について詳しく説明します。ただし、個々のコンポーネントがどのように機能するかを理解したい場合は、以下のコードウォークスルーセクションと、このブログのGitHubリポジトリ(https://github.com/abhirockzz/redisearch-tweet-analysis)を参照してください。
前提条件
- まず、MicrosoftAzureアカウントが必要です。ここで無料で入手してください。
- 上記のサービスコンポーネントは、ネイティブのDockerCLIコマンドを使用してAzureコンテナーインスタンスにデプロイされます。この機能は、DockerとAzureの統合によって実現されます。
- Windows、macOSの場合はDocker Desktopバージョン2.3.0.5以降が必要です。または、Linuxの場合はDockerACI統合CLIをインストールします。 Twitter Streaming APIを使用するには、Twitter開発者アカウントも必要です。まだお持ちでない場合は、次の手順に従ってください。 RediSearchの動作中!
このクイックスタートチュートリアルを使用して、AzureでRedisEnterprise層のキャッシュをセットアップすることから始めます。セットアップが完了したら、Redisホスト名とアクセスキーが手元にあることを確認してください:
私たちのサービスの両方のコンポーネントは、Dockerコンテナとして利用できます:TweetインデックスサービスとSearchAPIサービス。 (独自のDockerイメージを作成する必要がある場合は、GitHubリポジトリで利用可能なそれぞれのDockerfileを使用してください。)
これで、これらをAzure Container Instancesにデプロイすることがいかに便利であるかがわかります。これにより、管理されたサーバーレスAzure環境でDockerコンテナーをオンデマンドで実行できます。
Azureにデプロイする
docker-compose.yml ファイルは個々のコンポーネントを定義します( tweets-search およびtweets-indexer )。必要なのは、AzureRedisインスタンスの値とTwitter開発者アカウントの資格情報を置き換えるように更新することだけです。ファイル全体は次のとおりです。
Azureコンテキストを作成します:
GitHubレポジトリのクローンを作成します:
両方のサービスコンポーネントをコンテナグループの一部としてデプロイします:
(ACIコンテキストで現在使用可能なDocker Composeコマンドは、 docker composeで始まることに注意してください。 。それはNOT docker-composeと同じ ハイフン付き。 )
次のような出力が表示されます:
サービスが開始されるのを待ちます。Azureポータルを確認することもできます。両方のサービスが稼働し始めたら、それぞれのログを確認できます。
すべてがうまくいけば、ツイート消費者サービスが開始されたはずです。ツイートのストリームを読み取り、Redisに永続化します。
真実の瞬間!
ツイートデータをクエリするときが来ました。これを行うには、IPアドレスと完全修飾ドメイン名(FQDN)を使用してAzureコンテナーインスタンスのREST APIにアクセスできます(詳細については、コンテナーアクセスを参照してください)。 IPを見つけるには、 docker psを実行します ポートを確認してください 出力のセクション(以下に示すように):
これで、あらゆる種類のクエリを実行できます。飛び込む前に、検索クエリで使用できるインデックス付きの属性について簡単に説明します。
(以下の例ではcurlを使用していますが、VS Codeには「RESTクライアント」を強くお勧めします)
検索サービスAPIのベースURLを設定します:
簡単に始めて、すべてのドキュメントをクエリします(*を使用):
次のような出力が表示されます:
ヘッダーのPage-Sizeに注目してください および検索ヒット :これらは、主にページ付けと制限を示すために、アプリケーションから渡されるカスタムヘッダーです。 「getmeallthedocuments」クエリに応答してRedisで12件の結果が見つかりましたが、JSON本文は10件のエントリを返しました。これは、RediSearch Go APIのデフォルトの動作が原因であり、次のようなさまざまなクエリパラメータを使用して変更できます。
または、たとえば、iPhoneから送信されたツイートを検索します。
クエリ結果のすべての属性が常に必要なわけではありません。たとえば、これはユーザー(Twitterの画面名)とツイートテキストを取得する方法です:
ユーザー名に関するクエリはどうですか(例:joで始まる):
クエリで属性の組み合わせを使用することもできます:
特定のハッシュタグが付いたツイートを探すのはどうですか?複数のハッシュタグ(|で区切る)を使用することは可能ですか?
bidenのツイート数を知りたい ハッシュタグは最近作成されましたか?範囲クエリを使用する:
ツイートの座標情報を取得できた場合は、それらを抽出して、座標でクエリを実行してみてください。 属性:
これらはほんの一例です。さらに実験して、他のクエリを試してみてください。 RediSearchドキュメントのこのセクションが役立つ場合があります!
重要: 終了したら、Azureコンテナーインスタンスのサービスとそれぞれのコンテナーを停止することを忘れないでください。
Azure Portalを使用して、作成したAzureRedisインスタンスを削除します。
コードウォークスルー
このセクションでは、個々のコンポーネントのコードの概要を説明します。これにより、GitHubリポジトリのソースコードを簡単にナビゲートできるようになります。
消費者/インデクサーのツイート:
go-twitterライブラリはTwitterとのやり取りに使用されています。
Twitter Streaming APIに対して認証されます:
また、別のゴルーチンでツイートのストリームをリッスンします:
移動index.AddData(tweetToMap(tweet))—に注意してください これは、インデックス作成コンポーネントが呼び出される場所です。 Azure Cache forRedisに接続します:
次に、インデックスを再作成する前に、インデックス(および既存のドキュメントも)を削除します。
インデックスとそれに関連するドキュメントは削除され、クリーンな状態から開始できるようになります。これにより、実験やデモが簡単になります。必要に応じて、この部分をコメント化することもできます。
各ツイートの情報はHASHに保存されます (名前は tweet:
ツイート検索により、 REST APIが公開されます RediSearchを照会します。すべてのオプション(クエリなどを含む)は、クエリパラメータの形式で渡されます。例: http:// localhost:8080 / search?q =@ source:iphone 。必要なクエリパラメータを抽出します:
q パラメータは必須です。ただし、次のパラメータを検索に使用することもできます。
- フィールド:結果で返す属性を指定し、
- offset_limit:検索する場所からのオフセットと、結果に含めるドキュメントの数を指定する場合(RediSearch Goクライアントの場合、デフォルトでは、オフセットは0、制限は10です)。
例:
最後に、結果が繰り返され、JSON(ドキュメントの配列)として返されます:
このセクションは以上です!
Azure CacheforRedisのRedisEnterprise層
Redis Enterpriseは、MicrosoftとRedisによって運用およびサポートされているAzure CacheforRedisの2つの新しい層の形式でAzure上のネイティブサービスとして利用できます。このサービスにより、開発者は、RediSearchなどのモジュールを含むRedisEnterpriseの豊富な機能にアクセスできます。詳細については、次のリソースを参照してください。
- Azure Cache for Redis、エンタープライズ層が一般提供になりました
- クラウドでRedisEnterpriseを成長させるためのMicrosoftとのパートナーシップの深化
- MicrosoftとRedisは協力して、開発者にRedis用の新しいAzureCache機能を提供します。
- Azure CacheforRedisのRedisEnterprise機能
結論
このエンドツーエンドのアプリケーションは、インデックスを操作し、リアルタイムデータを取り込んで、RediSearchエンジンによってインデックスが付けられるドキュメント(ツイート情報)を作成し、多様なクエリ構文を使用してそれらのツイートに関する洞察を抽出する方法を示します。
Redisドキュメントでトピックを検索すると、舞台裏で何が起こるかを理解したいですか?このブログ投稿をチェックして、RedisサイトがRediSearchに全文検索をどのように組み込んだかを確認してください。または、サーバーレスアプリケーションでRediSearchを使用する方法を探求することに興味がありますか?
まだ始めている場合は、RediSearchクイックスタートページにアクセスしてください。
Azure Cache for Redisのエンタープライズ機能について詳しく知りたい場合は、次のリソースを確認してください。
- マルチゾーンの冗長性とその設定方法
- ネットワーク分離のためのプライベートリンクのサポート
- 適切なキャッシュ階層の選択
- エンタープライズ層の高可用性
-
RediSearch2.0が最初のマイルストーンに到達
RediSearch2.0の開発における最初のマイルストーンのリリースを発表できることを嬉しく思います。 RediSearchは、Redisデータをクエリして、さまざまな複雑な質問に答えることができるリアルタイム検索エンジンです。 2.0-M01と呼ばれるこのマイルストーンは、インデックスがデータと同期し続ける方法の再構築を示しています。インデックスを介してデータを書き込む代わりに( FT.ADD を使用) コマンド)、RediSearchはハッシュで書き込まれたデータを追跡し、自動的にインデックスを作成します。 ここでの大きな利点は、アプリケーションコードを更新しなくても、既存のRe
-
Windows 10 でアクション センターを有効または無効にする
Windows でアクション センターを有効または無効にする10: ご存知のように、Windows 10 のアクション センターは、アプリの通知やさまざまな設定への迅速なアクセスに役立ちますが、すべてのユーザーが気に入っている、または実際に使用している必要はないため、多くのユーザーは単にアクション センターを無効にしたいと考えています。このチュートリアルは、アクション センターを有効または無効にする方法に関するものです。しかし、公平を期すために、アクション センターは実際には非常に役立ちます。独自のクイック アクション ボタンをカスタマイズでき、過去の通知をクリアするまですべて表示されるからで