Memcached

高パフォーマンスキャッシュやセッションストアとして使用できる、使いやすい分散型インメモリ key-value ストア

Memcached とは

Memcached は使いやすく、高パフォーマンスなインメモリデータストアです。ミリ秒未満の応答時間を実現する、スケーラブルかつオープンソースの成熟したソリューションで、キャッシュセッションストアとして役立ちます。Memcached は、ウェブ、モバイルアプリケーション、ゲーム、アドテクノロジー、e コマースの分野のリアルタイムアプリケーションを稼動させるためによく使われています。

Memcached とは

Memcached の仕組み

データをディスクや SSD に保存するデータベースとは異なり、Memcached はデータをメモリ内に保持します。Memcached のようなインメモリ key-value ストアでは、ディスクにアクセスする必要がないため、シークタイムの遅延がなく、マイクロ秒単位でデータにアクセスできます。また、Memcached は分散型であるため、新しいノードを追加することにより簡単にスケールアウトできます。さらに Memcached はマルチスレッドであるため、コンピューティング性能を簡単にスケールアップできます。スピード、スケーラビリティ、シンプルな設計、効率的なメモリ管理、一般的な言語のほとんどに対応する API サポートなどの利点により、Memcached は高パフォーマンスで大規模なキャッシングが関係する数多くのユースケースで採用されています。

Memcached の利点

Memcached ではすべてのデータがサーバーのメインメモリに保持されます。ほとんどのデータをディスクや SSD に保存する PostgreSQL、Cassandra、MongoDB などのデータベースとは異なり、インメモリデータストアではディスクとの間を繰り返し往復する必要はありません。これにより、さらに多くのオペレーションをさらに速い応答時間でサポートできます。その結果、平均ミリ秒未満の読み取りと書き込み時間という非常に高速なパフォーマンスと、1 秒に幾百万ものオペレーションのサポートが可能になります。

Memcached はシンプルで汎用に設計されているため、アプリケーション開発において強力で使いやすいソリューションです。Memcached の開発者は多くのオープンソースクライアントを利用できます。Java、Python、PHP、C、C++、C#、JavaScript、Node.js、Ruby、Go やその他多数の言語がサポートされています。

Memcached の分散型、マルチスレッドアーキテクチャにより簡単にスケールできます。複数のノード間でデータを分割して、クラスターに新しいノードを追加することにより性能をスケールできます。さらに、Memcached はマルチスレッドであるため、特定のノードにおいて複数のコアを利用可能です。これにより、コンピューティング性能を簡単にスケールアップできます。Memcached を利用して、高速かつ安定したパフォーマンスを実現する、高度にスケーラブルな分散型キャッシングソリューションを構築できます。

Memcached は活発なコミュニティがサポートしている成熟したオープンソースプロジェクトです。WordPress や Django といったアプリケーションでは、パフォーマンスを向上させるために Memcached の使用がサポートされています。Memcached はオープン標準ベースで、オープンデータ形式をサポートしており、豊富なクライアントを特徴としているため、ベンダーや技術のロックインはありません。

ユースケース

キャッシュ

Memcached は、高パフォーマンスインメモリキャッシュを実装して、データアクセスレイテンシーの低減、スループットの向上、バックエンドシステムの負荷軽減を実現する優れた方法です。Memcached によってキャッシュされたアイテムはミリ秒未満で提供されるため、負荷の増大に対応して、高コスト効率かつ簡単にスケールすることができます。Memcached は、データベースのクエリ結果のキャッシュ、セッションのキャッシュ、ウェブページのキャッシュ、API キャッシュ、画像、ファイル、メタデータなどのオブジェクトのキャッシュによく使われています。

セッションストア

Memcached は永続性が重要でない場合に、インターネット規模のアプリケーションにセッションデータを保存、管理するためにアプリケーション開発者がよく利用するインメモリデータストアです。Memcached は、ユーザープロファイル、認証情報、セッション状態などのセッションデータを管理するために必要とされるミリ秒未満のレイテンシーやスケールを備えています。

言語のサポート

Memcached では、以下のような主要なプログラミング言語とプロトコルをサポートしています。

Python

Java

PHP

C/C#/C++

Perl

Go

Ruby

JavaScript

Node.js

ASCII プロトコル

バイナリプロトコル

TCP および UDP プロトコル

Redis とMemcached

Redis と Memcached の 2 つはメモリ内キー値データ保存として最もよく使われます。Memcached はシンプルに、また Redis は幅広いユースケースに対して効果的であるように、豊富な機能をお届けできるように作られています。2 つのエンジンの違いを理解して、どちらのソリューションがご自身のニーズに合うかを決めてください。Redis とMemcached の詳細

AWS での完全マネージド型の Memcached

Amazon は、フルマネージド Memcached サービスである Amazon ElastiCache for Memcached を提供しています。

  • クラウド内で Memcached のデプロイメントを簡単に設定、運用、スケールできます。障害が発生したノードは自動的に検出して置き換えられます。
  • 高コスト効率で規模の変更が可能なハードウェア容量を利用します。
  • 自動検出と一緒に ElasitCache Memcached Cluster Client を使用することにより、ノード管理を簡素化してアプリケーション開発を高速化できます。