Remote Dictionary Serverの略であるRedisは、Salvatore SanfillipoによってC言語で記述された、BSDライセンスのオープンソースのメモリ内Key-Valueデータ構造ストアであり、最初にリリースされました。 2009年5月10日。構成方法に応じて、Redisはデータベース、キャッシュ、またはメッセージブローカーのように機能します。 RedisはNoSQLデータベースシステムであることに注意することが重要です。これは、MySQL、PostgreSQL、OracleなどのSQL(Structured Query Language)駆動型データベースシステムとは異なり、Redisはテーブル、行、列を構成する明確に定義されたデータベーススキーマにデータを格納しないことを意味します。代わりに、Redisはデータをデータ構造に格納するため、非常に柔軟に使用できます。 ScaleGridのRedis™*のホスティングにより、さまざまなRedisのユースケースで時間のかかる操作を自動化できます。このブログでは、さまざまなコアデータ構造タイプごとのRedisの主なユースケースの概要を説明します。
Redisのデータ構造
Redisがサポートするデータ型のいくつかを見てみましょう。 Redisには、文字列、リスト、セット、ソートされたセット、およびハッシュがあります。これらについては、この記事で説明します。さらに、ビットマップ、ハイパーログログ、半径クエリとストリームを使用した地理空間インデックスなど、他のデータタイプもあります。 Redisコミュニティによって作成されたRedisGUIツールがいくつかありますが、コマンドラインは断然最も重要なクライアントです。たとえば、MySQLのphpMyAdminやPostgreSQLのPgAdminなどのGUI管理システムを好む一般的なSQLデータベースユーザーとは異なります。
>Redisに存在するデータ型を詳しく見てみましょう。
Redis文字列
Redis文字列は、他のすべてのデータ構造タイプで利用される最も基本的なタイプのRedis値であり、JavaやPythonなどの他のプログラミング言語の文字列と非常によく似ています。任意のデータ型を含むことができる文字列は、バイナリセーフと見なされ、最大長は512MBです。 Redis文字列に役立つコマンドを次に示します。
文字列‘ johnを保存するには ’は「学生」などのキーの下にあります Redisで、次のコマンドを実行します:
SET“ student”“ john”
文字列を取得するには、次のようにGETコマンドを使用します。
GET“ student”
キーに含まれる文字列を削除するには、DELコマンドを使用します。
DEL「学生」
Redis文字列のユースケース
- セッションキャッシュ: 多くのWebサイトは、Redis文字列を利用してセッションキャッシュを作成し、HTMLフラグメントまたはページをキャッシュすることでWebサイトエクスペリエンスを高速化します。データは一時的にRAMに保存されるため、この属性により、Redisはセッションキャッシュとして最適です。オンラインストアのショッピングカートに保存されているアイテムなど、ユーザー固有のデータを一時的に保存できます。これは、ユーザーがログアウトしたり接続を失ったりした場合にデータが失われないようにするために重要です。 >
- キュー: トラフィックの混雑、メッセージング、データ収集、ジョブ管理、またはパッカールーティングを処理するアプリケーションでは、Redisキューを検討する必要があります。これは、リソース分散の到着率と出発率によってキューサイズを管理するのに役立ちます。
- 使用量と従量制課金: Redis Stringsのあまり知られていないユースケースは、消費ベースの価格設定モデルのリアルタイム計測です。これにより、実際の使用量に基づいて請求するSaaSプラットフォームで、テキストメッセージや分数を請求する可能性のある電気通信業界など、顧客のアクティビティを測定できます。
Redisリスト
リストには、挿入順序で並べ替えられた文字列が含まれています。 Redisリストを使用すると、リストの先頭または末尾にアイテムを追加できます。これは、ジョブのキューイングに非常に役立ちます。実行する必要のある緊急のジョブがさらにある場合は、キュー内の他の優先度の低いジョブの前にプッシュすることができます。 LPUSHコマンドを使用して文字列の先頭または左側に要素を挿入し、RPUSHコマンドを使用して文字列の末尾または右側に挿入します。例を見てみましょう:
LPUSH list x#リストは「x」になりました
LPUSH list y#リストは "y"、 "x"になりました
RPUSH list z#これでリストは "y"、 "x"、 "z" (RPUSHコマンドによって「z」要素がリストの最後に追加された方法に注意してください)
Redisリストのユースケース
- ソーシャルネットワーキングサイト: Twitterなどのソーシャルプラットフォームは、Redisリストを使用してタイムラインやホームページフィードにデータを入力し、トレンドのツイートやストーリーでフィードの上部をカスタマイズできます。
- RSSフィード: カスタムソースからニュースフィードを作成して、最新の更新を取得し、関心のあるフォロワーがRSSフィードを購読できるようにします。
- リーダーボード: Redditやその他の投票プラットフォームなどのフォーラムは、Redisリストを利用して記事をリーダーボードに追加し、最も投票されたエントリで並べ替えます。
Node.js、Redis、Socket.ioのブログ投稿を使用したキャッシングツイートで独自のTwitterフィードを作成する方法を学びましょう。
コアデータ構造タイプ別の上位#RedisユースケースクリックしてツイートRedisセット
Redisセットは、共通部分や和集合などの強力な操作をサポートする強力なデータ型です。これらは順序が決まっておらず、通常、監査を実行してさまざまな変数間の関係を確認する場合に使用されます。セットは適度に高速であり、保存した要素の数に関係なく、セット内のアイテムを追加または削除するのに同じ時間がかかります。さらに、セットは重複キーまたは重複メンバーを許可しないため、セットに複数回追加されたキーは単に無視されます。これは、複数の類似したエントリの重複を回避するSADDと呼ばれる関数によって駆動されます。 SADD属性は、一意の値をチェックするときに使用できます。また、自動スクリプトであるcronジョブなど、バックグラウンドで実行されるジョブをスケジュールするためにも使用できます。
これらは、オンラインショッピングサイトのリアルタイムの顧客行動を分析するのに特に役立ちます。たとえば、オンラインの衣料品店を経営している場合、Redis Sorted Setsは、和集合、交差点、減算(ベン図で一般的に適用される)などの関係マッチング手法を使用して、顧客の行動を正確に把握します。性別間の買い物パターン、どの衣料品が最も売れているのか、どの時間帯が最も売れているのかに関するデータを取得できます。
Redisセットのユースケース
- eコマース売上の分析: 多くのオンラインストアでは、Redisセットを使用して、特定の製品カテゴリまたはサブカテゴリの検索や購入などの顧客の行動を分析しています。たとえば、オンライン書店の所有者は、心理学で医学書を購入した顧客の数を知ることができます。
- IPアドレス追跡: Redisセットは、特定のWebサイトページまたはブログ投稿にアクセスしたすべてのIPアドレスを分析し、SADD機能を使用して一意の訪問者の重複をすべて無視できるようにする開発者にとって優れたツールです。
- 不適切なコンテンツフィルタリング: ユーザー入力を収集するアプリの場合、不適切な単語のコンテンツフィルタリングを実装することをお勧めします。これは、フィルタリングする単語をSETキーとSADDコマンドに追加することでRedisセットを使用して行うことができます。
ソートされたセット
名前が示すように、Redisの並べ替えられたセットは、要素に順序を割り当てる文字列のコレクションであり、Redisで最も高度なデータ構造の1つです。これらはRedisセットに似ていますが、ソートされたセットがすべてのメンバーをスコアに関連付けるのに対し、セットには順序がありません。並べ替えられたセットは、順序付けられたリストを返し、可能な限り短い時間で要素にアクセスできるため、非常に高速であることが知られています。
Redisで並べ替えられたセットのユースケース
- Q&Aプラットフォーム: Stack OverflowやQuoraなどの多くのQ&Aプラットフォームは、Redis Sorted Setsを使用して、提案された各質問の最高投票数の回答をランク付けし、最高品質のコンテンツがページの上部に表示されるようにします。
- ゲームアプリのスコアボード: オンラインゲームアプリは、Redisの並べ替えられたセットを利用して、スコアを繰り返すことができるため、ハイスコアリストを維持しますが、一意のユーザーの詳細を含む文字列はできません。
- タスクスケジューリングサービス: スコアを関連付けてキュー内のタスクの優先度をランク付けできるため、Redisの並べ替えられたセットはタスクスケジューリングサービスに最適なツールです。スコアが記載されていないタスクの場合は、WEIGHTSオプションをデフォルトの1に使用できます。
- ジオハッシュ: RedisジオインデックスAPIは、ジオハッシュ手法の並べ替えセットを使用します。これにより、緯度と経度に基づいて場所にインデックスを付け、多次元データを線形データに変換できます。
Redisハッシュ
Redisハッシュは、文字列フィールドと文字列値の間のマップです。これは、オブジェクトを表すために一意のフィールドとその値のコンテナを基本的に作成する必要がある場合に使用するデータ型です。ハッシュを使用すると、わずかなスペースで、最大232 – 1のフィールドと値のペア(40億以上)までの適切な量のフィールドを格納できます。小さなRedisインスタンスを使用して数百万のオブジェクトを格納できるため、可能な限りRedisハッシュを使用する必要があります。多くの高度な操作に加えて、get、set、existsなどの基本的なハッシュコマンド操作を使用できます。
Redisハッシュのユースケース
- ユーザープロファイル: 多くのWebアプリケーションは、名前、名前、電子メール、パスワードなどのすべてのユーザーフィールドに単一のハッシュを使用できるため、ユーザープロファイルにRedisハッシュを使用します。
- ユーザー投稿: Instagramのようなソーシャルプラットフォームは、Redisハッシュを利用して、アーカイブされたすべてのユーザーの写真または投稿を1人のユーザーにマッピングします。ハッシュメカニズムにより、値をすばやく検索して返すことができ、データをメモリに収め、サーバーの1つが停止した場合にデータの永続性を活用できます。
- マルチテナントメトリックの保存: マルチテナントアプリケーションは、Redisハッシュを活用して、ハッシュを非常に小さなメモリスペースで効率的にエンコードできるため、各テナント間の確実な分離を保証する方法で製品と販売の指標を記録および保存できます。
Redisを使用しているのは誰ですか?
Redisは、ほんの数例を挙げると、旅行、ホスピタリティ、コミュニティフォーラム、ソーシャルメディア、SaaS、eコマース業界で大きな市場シェアを獲得しています。 Redisを使用している大手企業には、Pinterest、Uber、Slack、Airbnb、Twitter、StackOverflowなどがあります。今日のRedisの人気に関する統計は次のとおりです。
- StackShareでRedisを使用していると報告された4,107社
- 8,759人の開発者がStackShareでRedisを使用していると述べました
- 38,094GitHubユーザーがRedisにスターを付けました
- DB-Enginesで144.08のスコアで8位にランク付けされたデータベース