Upstash Redis を活用したリアルタイム コード コラボレーション
はじめに
コードシェアのようなプラットフォームがどのように構築されているか疑問に思ったことはありますか?自分自身の優れた開発者エクスペリエンスを維持しながら、そのようなサービスをスケーリングするという課題に取り組んだことがありますか?Bytecrowds を構築すると決めたとき、これらすべてを行う方法を学ばなければなりませんでした。厳密な調査を行った後、テキスト共有機能を提供するために Yjs を使用することを決定し、データベースを選択する段階になりました。市場には非常に多くの選択肢があるため、シンプルさという 1 つの重要なキーワードを使用してリストを絞り込みました。
Upstash を選ぶ理由
Upstash を発見する前から、私はそのシンプルな API のために Redis® に興味を持っていました。ただし、これをプライマリ データベースとして使用すると、スケーリング (キャッシュにも必要になる場合があります) や永続性の維持などの課題が伴います。同時に、スポンサーを獲得する前に、オープンソース ソフトウェアの予算編成について細心の注意を払う必要があります。たとえ時々使用されなかったとしても、コンピューティング能力に対して料金を支払いますか?突然のトラフィックの急増に対処し、新機能の公開、既存の機能の改善、バグの修正に取り組むのではなく、インフラストラクチャの作業に何時間も費やす準備ができていますか?私もそうではありませんでした。そこで私は Upstash を見つけました。
Upstash Redis の製品は、私の重要な基準の 3 つを満たしています:それは使いやすいです。 、拡張が容易です。 そして柔軟です。 。これを低レイテンシーと組み合わせ、サーバーレス クライアントで使用するすぐに使える REST SDK (要件) Bytecrowds も)、グローバル レプリケーション、コンピューティング能力の従量課金制プランなどを例に挙げると、私がプロジェクトにこれを選んだ理由がわかるでしょう。
アプリ全体で Redis® を使用する
Redis® をプロジェクトのメイン データベースとして使用し、複数のサービスのニーズを満たす方法を見てみましょう。コンテキストを理解するために、Bytecrowds のフローの図を次に示します。

Ably を使用して、クライアント間でテキストを同期し、リクエストの IP アドレスに基づいてデータを収集するカスタム分析エンジンを使用します。
メインストレージ
bytecrowd は、次のプロパティを持つ Redis® ハッシュの形式をとります。
{
text: string,
language: string,
authorizedEmails: undefined || string array
} プロパティの 1 つが変更されるとハッシュを更新します。更新の間には「x」秒の遅延があります。運用環境では、これは現在 100 ミリ秒に設定されています。
認証と認可
認証
Bytecrowds は Next.js を使用しているため、GitHub OAuth を統合するための確実な選択肢は Auth.js でした。幸いなことに、セッションの保存に Upstash アダプターを利用することもでき、アプリ全体で Redis® を使用できるようになりました。
承認
Bytecrowds は、オンデマンドで authorizedEmails を作成することで承認を処理します。 一度設定すると API から変更できないフィールド。 Redis® について私が気に入っている点の 1 つは、効率的になるようにアルゴリズム的に設計されており、日常的な操作にすぐに使用できる多数の関数があることです。例を挙げると、authorizedEmails かどうかを確認するだけで済みます。 すでに設定されている場合は、複雑度が O(1) の HEXISTS コマンドを使用します。
分析
Bytecrowds は、次の 2 つのカテゴリのデータを処理する分析システムを使用します。
- 1 日の統計。Redis® ハッシュの形式で、
year month dayのような名前が付けられます。 次のプロパティを使用します:
{
countries: string array,
hits: integer,
pages: string array,
uniqueVisitors: integer,
addresses: string array,
continents: string array
}
addresses の場合 は、ウェブサイト訪問者の一意の数を決定するために使用される、SHA256 で暗号化された IP アドレスの配列です。
continentsという名前の 3 つのキー 、countries、pagesデータの保存に Redis® ソートセットが使用されたすべての統計情報をそのカウント (ソートセットの場合は「スコア」) とともに保存することで、SORT や SORT_RO などのコマンドを使用して簡単にクエリや並べ替えを行うことができます。 Redis のシンプルさが改めてわかります。
この背後にあるコードに興味がある場合は、https://github.com/Bytecrowds/analytics/blob/main/src/index.js
をチェックしてください。注意 :より複雑なシナリオでは、処理前に生データを保存したり、Apache Kafka などのストリーム処理ツールを使用したりするなど、このシステムにいくつかの変更を適用することになるでしょう (Upstash もこれに対応できます。ドキュメントを確認してください)。
ライブでご覧ください
Bytecrowds の動作を見てみたいですか? https://www.bytecrowds.com にアクセスし、「new bytecrowd」ボタンをクリックして、複数のタブでリンクを開きます。書き始めると、接続されているすべてのクライアントにわたってコードが複製されていることがわかります。
エンディング
オープンソース プロジェクトの唯一のアクティブなメンテナになるのが難しいことは周知の事実ですが、適切なツールと自動スケーリング インフラストラクチャを用意することは、トラフィックの急増を心配することなく、素晴らしいプロジェクトに取り組み続けるための強力なサポートとなります。 Upstash Redis® を試してみることをすでに確信していますか?無料のアカウントにサインアップしてください。クレジット カードは必要ありません。
完全なコードを確認するには、GitHub リポジトリを確認してください。この記事に関してご質問やフィードバックがございましたら、tudor.zgimbau@gmail.com までご連絡ください。
-
金融サービスにおけるデータアーキテクチャの最新化のベストプラクティス
金融サービスにおける最新のデータレイヤーのベストプラクティス は、堅固で低速なITレガシーシステムから最新のデータレイヤーに最新化するための最良のステップに関する重要なホワイトペーパーです。リアルタイムで顧客の要求に応えます –以下から無料でダウンロード 。 Redisは最近、データの巨人であるTDWIとのウェビナーに参加し、金融サービスにおけるデータアーキテクチャの最新化のベストプラクティスについて話し合いました。ウェビナーをリードするのは、情報管理の世界的に有名な専門家であるDavid Loshinであり、さまざまなTDWIイベントや会議でデータレイヤーの最新化について頻繁に語っています
-
Redis ZREM –Redisでソートされた設定値から要素を削除する方法
このチュートリアルでは、キーに格納されている並べ替えられた設定値から1つ以上の指定された要素を削除する方法について学習します。このために、コマンドを使用します– ZREM redis-cliで。 このコマンドは、指定されたキーに格納されているソート済みセットから1つ以上の指定された要素を削除します。ソートされたセットに存在しない指定されたメンバーは無視されます。キーは存在するが、キーに格納されている値が並べ替えられたセットのデータ型ではない場合、エラーが返されます。 redis ZREMコマンドの構文は次のとおりです:- 構文:- redis host:post> ZREM