Redis は高速なオープンソースのインメモリ型キー値データ構造ストアです。Redis には多目的なインメモリデータ構造が用意されており、さまざまなカスタムアプリケーションを簡単に作成できます。Redis の最先端のユースケースには、キャッシュ、セッション管理、PUB/SUB、リーダーボードなどが含まれています。現在、最も人気のあるキー値ストアになっています。BSD でライセンスされ、最適化された C コードで書かれており、複数の開発言語に対応しています。Redis は、REmote DIctionary Server の略語です。

その速度と使いやすさから、クラス最高のパフォーマンスを必要とするウェブ、モバイル、ゲーム、アドテック、IoT アプリケーションで、Redis は人気の選択肢となっています。AWS では、Redis 用 Amazon ElastiCache という完全マネージド型の最適化されたデータベースサービスによって Redis をサポートすると共に、お客様が AWS EC2 で自ら管理する Redis を運用できるようにしています。

Amazon EC2 Container Service

今すぐ始める
Benefit_ElastiCache_Performance

ほとんどのデータベース管理システムでデータがディスクや SSD に保存されるのとは対照的に、Redis のデータはすべてサーバーのメインメモリに存在します。ディスクへのアクセスが不要なため、Redis のようなインメモリ型データベースではシークタイムの遅延を避けられ、少数の CPU 命令を使った、よりシンプルなアルゴリズムでデータにアクセスできます。通常のオペレーションの実行にかかる時間はミリ秒未満です。

Benefit_ElastiCache_data_structure

Redis では、ユーザーがさまざまなデータタイプにマップするキーを保存できます。基本的なデータタイプは String で、最大 512 MB のテキストまたはバイナリデータです。Redis では、追加順に並べられた Lists of Strings、Sets of unordered Strings、スコアによりソートされた Sorted Set、フィールドと値のリストを保存する Hash、データセット内の一意の項目をカウントする HyperLogLogs もサポートされています。Redis を使用すれば、ほとんどどのようなタイプのデータでもインメモリに保存できます。

Benefit_ElastiCache_easeofuse

Redis には、開発とオペレーションをよりスピーディかつ容易に行えるようにするための数多くのツールが用意されています。チャネルにメッセージを公開し、サブスクライバーに配信する Pub/Sub は、チャットやメッセージングシステムに最適です。有効期限が設定され、期限後には自己消去を行う TTL キーは、データベースに不要なデータが蓄積されるのを防止します。アトミックカウンターは競合条件によって結果の不整合が発生することを防ぐ機能、Lua はパワフルかつ軽量なスクリプト言語です。

Benefit_ElastiCache_replication

Redis ではマスター/スレーブアーキテクチャが採用され、データを複数のスレーブサーバーに複製できる非同期レプリケーションに対応しています。これにより、読み取りパフォーマンスの向上 (リクエストが複数サーバーに分散される) と、プライマリサーバーが利用不能になった場合の復旧を実現できます。

耐久性を実現するため、Redis ではポイントインタイムのスナップショット (Redis データセットをディスクにコピーする) と、書き込み時に各データ変更を保存する Append Only File (AOF) の作成の両方がサポートされています。どちらのメソッドでも、障害発生時の Redis データの迅速な復元が可能です。

Benefit_ElastiCache_languageSupport

Redis 開発者が利用できるオープンソースクライアントは 100 を超えています。Java、Python、PHP、C、C++、C#、JavaScript、Node.js、Ruby、R、Go やその他多数の言語がサポートされています。

Redis を別のデータベースの「フロント」に配置して、パフォーマンスの高いインメモリキャッシュを作成することにより、レイテンシーを減少させ、スループットを増大し、リレーショナルデータベースや NoSQL データベースの負荷を軽減します。

Redis はセッション管理タスクに非常に適しています。セッションキーに適切な TTL を設定して Redis を高速キー値ストアとして使用することで、セッション情報を管理します。ゲーム、e コマースウェブサイト、ソーシャルメディアプラットフォームといったオンラインアプリケーションでは、一般的にセッション管理が必要になります。

Redis の Sorted Set データ構造を使用すると、要素がスコア順にソートされた状態でリストに維持されます。このため、ゲームの勝者を表示することや、最も「いいね」を集めたメッセージを投稿すること、その他リーダーを表示させるどのような用途でも、動的なリーダーボードを簡単に作成できます。

Redis ではイベントのレートを測定でき、必要な場合には調整することも可能です。クライアントの API キーに関連付けられた Redis カウンターを使用することで、特定の期間内のアクセスリクエスト数をカウントでき、制限を超えた場合にはアクションを実行できます。レートリミッターは、フォーラムの投稿数制限、リソース利用制限、スパム発信者の影響抑制に広く利用されています。

Redis の List データ構造を使えば、軽量かつ持続的なキューを簡単に実装できます。List ではブロッキング機能に加えてアトミック操作が提供されているため、信頼性の高いメッセージブローカーや循環リストを必要とするさまざまなアプリケーションに適しています。

Redis では、パターンマッチングを備えた PUB/SUB 標準がサポートされています。これにより、Redis では高性能のチャットルーム、リアルタイムのコメントストリーム、サーバー間通信などをサポートできます。PUB/SUB を使用すれば、公開イベントに基づいてアクションをトリガーすることもできます。

Redis 用 Amazon ElastiCache は、Redis 互換の完全マネージド型インメモリデータ構造サービスです。