Memcached-quick-guide
Memcached-概要
Memcachedは、データベースの負荷を減らすことで動的なWebアプリケーションを高速化することを目的とした、オープンソースの高性能な分散メモリキャッシュシステムです。 これは、データベース呼び出し、API呼び出し、またはページレンダリングの結果としてメモリに格納される文字列、オブジェクトなどのキーと値の辞書です。
Memcachedは、2003年にBrad FitzpatrickによってLiveJournal用に開発されました。 ただし、現在はNetlog、Facebook、Flickr、Wikipedia、Twitter、YouTubeなどで使用されています。
Memcachedの主要な機能は次のとおりです-
- オープンソースです。
- Memcachedサーバーは大きなハッシュテーブルです。
- データベースの負荷を大幅に削減します
- データベースの負荷が高いWebサイトに最適です。
- Berkeley Software Distribution(BSD)ライセンスの下で配布されています。
- TCPまたはUDPを介したクライアント/サーバーアプリケーションです。
Memcachedではありません-
- 永続的なデータストア
- データベース
- アプリケーション固有
- ラージオブジェクトキャッシュ
- 耐障害性または高可用性
Memcached-環境
UbuntuにMemcachedをインストールする
UbuntuにMemcachedをインストールするには、ターミナルに移動し、次のコマンドを入力します-
Memcachedインストールの確認
Memcachedがインストールされているかどうかを確認するには、以下のコマンドを実行する必要があります。 このコマンドは、Memcachedがデフォルトポート 11211 で実行されていることを示しています。
別のポートでMemcachedサーバーを実行するには、以下のコマンドを実行します。 このコマンドは、TCPポート11111でサーバーを起動し、デーモンプロセスとしてUDPポート11111でリッスンします。
1回のインストールでMemcachedサーバーの複数のインスタンスを実行できます。
Memcached Java環境のセットアップ
JavaプログラムでMemcachedを使用するには、 https://code.google.com/archive/p/spymemcached/downloads [spymemcached-2.10.3.jar] をダウンロードし、このjarをクラスパスにセットアップする必要があります。
Memcached-接続
Memcachedサーバーに接続するには、ホスト名とポート名でtelnetコマンドを使用する必要があります。
構文
Memcached telnetコマンドの基本的な構文は次のとおりです-
ここで、 HOST と PORT はそれぞれMemcachedサーバーが実行されているマシンIPとポート番号です。
例
次の例は、Memcachedサーバーに接続し、単純なsetおよびgetコマンドを実行する方法を示しています。 Memcachedサーバーがホスト127.0.0.1およびポート11211で実行されていると仮定します。
Javaアプリケーションからの接続
JavaプログラムからMemcachedサーバーを接続するには、前の章で示したように、Memcached jarをクラスパスに追加する必要があります。 Memcachedサーバーがホスト127.0.0.1およびポート11211で実行されていると仮定します。 −
例
出力
プログラムをコンパイルして実行すると、次の出力が表示されます-
端末には情報メッセージもほとんど表示されない場合がありますが、無視してかまいません。
Memcached-データの設定
Memcached set コマンドは、新しい値を新しいキーまたは既存のキーに設定するために使用されます。
構文
Memcached set コマンドの基本的な構文は以下のとおりです-
構文のキーワードは以下のとおりです-
- key -データの保存とMemcachedからの取得に使用されるキーの名前です。
- フラグ-これは、ユーザーが提供したデータとともにサーバーが保存する32ビットの符号なし整数であり、アイテムが取得されるとデータとともに戻ります。
- exptime -秒単位の有効期限です。 0は遅延がないことを意味します。 exptimeが30日を超える場合、Memcachedはそれを有効期限のUNIXタイムスタンプとして使用します。
- バイト-それは格納する必要があるデータブロック内のバイト数です。 これは、Memcachedに保存する必要があるデータの長さです。
- * noreply(オプション)*-応答を送信しないようにサーバーに通知するパラメーターです。
- 値-保存する必要があるデータです。 上記のオプションを使用してコマンドを実行した後、データを新しい行に渡す必要があります。
出力
コマンドの出力は次のようになります-
- STORED は成功を示します。
- ERROR は、データの保存中に誤った構文またはエラーを示します。
例
次の例では、finddevguidesをキーとして使用し、有効期間を900秒に設定してMemcachedの値を設定します。
Javaアプリケーションを使用してデータを設定する
Memcachedサーバーでキーを設定するには、Memcached set メソッドを使用する必要があります。
例
出力
プログラムをコンパイルして実行すると、次の出力が表示されます-
Memcached-データの追加
Memcached add コマンドを使用して、値を新しいキーに設定します。 キーがすでに存在する場合、出力NOT_STOREDを提供します。
構文
Memcached add コマンドの基本的な構文は以下のとおりです-
構文のキーワードは以下のとおりです-
- key -データの保存とMemcachedからの取得に使用されるキーの名前です。
- flags -サーバーが提供されたデータとともに保存する32ビットの符号なし整数 ユーザーが入力し、アイテムが取得されるとデータとともに戻ります。
- exptime -秒単位の有効期限です。 0は遅延がないことを意味します。 exptimeがもっと Memcachedは30日以上経過すると、有効期限のUNIXタイムスタンプとして使用します。
- バイト-それは格納する必要があるデータブロック内のバイト数です。 これは Memcachedに保存する必要があるデータの長さ。
- * noreply(オプション)*-応答を送信しないようにサーバーに通知するパラメーターです。
- 値-保存する必要があるデータです。 上記のオプションを使用してコマンドを実行した後、データを新しい行に渡す必要があります。
出力
コマンドの出力は次のようになります-
- STORED は成功を示します。
- NOT_STORED は、データがMemcachedに保存されないことを示します。
例
次の例では、「キー」をキーとして使用し、有効期限を900秒にして値Memcachedを追加します。
故障出力
Javaアプリケーションを使用してデータを追加する
Memcachedサーバーにデータを追加するには、Memcached add メソッドを使用する必要があります。
例
出力
プログラムをコンパイルして実行すると、次の出力が表示されます-
Memcached-データの置換
Memcached replace コマンドは、既存のキーの値を置き換えるために使用されます。 キーが存在しない場合、NOT_STOREDを出力します。
構文
Memcached replace コマンドの基本的な構文は以下のとおりです-
構文のキーワードは以下のとおりです-
- key -データの保存とMemcachedからの取得に使用されるキーの名前です。
- フラグ-これは、ユーザーが提供したデータとともにサーバーが保存する32ビットの符号なし整数であり、アイテムが取得されるとデータとともに戻ります。
- exptime -秒単位の有効期限です。 0は遅延がないことを意味します。 exptimeが30日を超える場合、Memcachedはそれを有効期限のUNIXタイムスタンプとして使用します。
- バイト-それは格納する必要があるデータブロック内のバイト数です。 これは、Memcachedに保存する必要があるデータの長さです。
- * noreply(オプション)*-サーバーに何も送信しないように通知するパラメーターです 応答。
- 値-保存する必要があるデータです。 上記のオプションを使用してコマンドを実行した後、データを新しい行に渡す必要があります。
出力
コマンドの出力は次のようになります-
- STORED は成功を示します。
- NOT_STORED は、データがMemcachedに保存されないことを示します。
例
次の例では、「キー」をキーとして使用し、memcachedを有効期限900秒で保存します。 この後、同じキーが値「redis」に置き換えられます。
Javaアプリケーションを使用したデータの置換
Memcachedサーバーのデータを置き換えるには、Memcached replace メソッドを使用する必要があります。
例
出力
プログラムをコンパイルして実行すると、次の出力が表示されます-
Memcached-データの追加
Memcached append コマンドは、既存のキーにデータを追加するために使用されます。 データはキーの既存のデータの後に保存されます。
構文
Memcached append コマンドの基本的な構文は次のとおりです-
構文のキーワードは次のとおりです-
- key -データを保存および取得するキーの名前です Memcached。
- フラグ-これは、ユーザーが提供したデータとともにサーバーが保存する32ビットの符号なし整数であり、アイテムが取得されるとデータとともに戻ります。
- exptime -秒単位の有効期限です。 0は遅延がないことを意味します。 exptimeが30日を超える場合、Memcachedはそれを有効期限のUNIXタイムスタンプとして使用します。
- バイト-それは格納する必要があるデータブロック内のバイト数です。 これは、Memcachedに保存する必要があるデータの長さです。
- * noreply(オプション)*-サーバーに応答を送信しないことを通知するパラメーターです。
- 値-保存する必要があるデータです。 上記のオプションを使用してコマンドを実行した後、データを新しい行に渡す必要があります。
出力
コマンドの出力は次のようになります-
- STORED は成功を示します。
- NOT_STORED は、キーがMemcachedサーバーに存在しないことを示します。
- CLIENT_ERROR はエラーを示します。
例
次の例では、存在しないキーにデータを追加しようとします。 したがって、Memcachedは NOT_STORED を返します。 この後、1つのキーを設定し、それにデータを追加します。
Javaアプリケーションを使用したデータの追加
Memcachedサーバーにデータを追加するには、Memcached append メソッドを使用する必要があります。
例
出力
プログラムをコンパイルして実行すると、次の出力が表示されます-
Memcached-データの前に追加
Memcached prepend コマンドは、既存のキーにデータを追加するために使用されます。 データは、キーの既存のデータの前に保存されます。
構文
Memcached prepend コマンドの基本的な構文は次のとおりです-
構文のキーワードは次のとおりです-
- key -データを保存および取得するキーの名前です Memcached。
- フラグ-これは、ユーザーが提供したデータとともにサーバーが保存する32ビットの符号なし整数であり、アイテムが取得されるとデータとともに戻ります。
- exptime -秒単位の有効期限です。 0は遅延がないことを意味します。 exptimeが30日を超える場合、Memcachedはそれを有効期限のUNIXタイムスタンプとして使用します。
- バイト-それは格納する必要があるデータブロック内のバイト数です。 これは、Memcachedに保存する必要があるデータの長さです。
- * noreply(オプション)*-サーバーに応答を送信しないことを通知するパラメーターです。
- 値-保存する必要があるデータです。 上記のオプションを使用してコマンドを実行した後、データを新しい行に渡す必要があります。
出力
コマンドの出力は次のようになります-
- STORED は成功を示します。
- NOT_STORED は、キーがMemcachedサーバーに存在しないことを示します。
- CLIENT_ERROR はエラーを示します。
例
次の例では、存在しないキーにデータを追加します。 したがって、Memcachedは NOT_STORED を返します。 この後、1つのキーを設定し、それにデータを追加します。
Javaアプリケーションを使用してデータを付加する
Memcachedサーバーにデータを追加するには、Memcached prepend メソッドを使用する必要があります。
例
出力
プログラムをコンパイルして実行すると、次の出力が表示されます-
Memcached-CASコマンド
CASは、Check-And-SetまたはCompare-And-Swapの略です。 Memcached CAS コマンドは、最後のフェッチ以降に更新されていない場合にデータを設定するために使用されます。 キーがMemcachedに存在しない場合、 NOT_FOUND を返します。
構文
Memcached CAS コマンドの基本的な構文は次のとおりです-
構文のキーワードは次のとおりです-
- key -データの保存とMemcachedからの取得に使用されるキーの名前です。
- フラグ-これは、ユーザーが提供したデータとともにサーバーが保存する32ビットの符号なし整数であり、アイテムが取得されるとデータとともに戻ります。
- exptime -秒単位の有効期限です。 0は遅延がないことを意味します。 exptimeが30日を超える場合、Memcachedはそれを有効期限のUNIXタイムスタンプとして使用します。
- バイト-それは格納する必要があるデータブロック内のバイト数です。 これは、Memcachedに保存する必要があるデータの長さです。
- unique_cas_key -getsコマンドから取得する一意のキーです。
- * noreply(オプション)*-サーバーに何も送信しないように通知するパラメーターです 応答。
- 値-保存する必要があるデータです。 上記のオプションを使用してコマンドを実行した後、データを新しい行に渡す必要があります。
出力
コマンドの出力は次のようになります-
- STORED は成功を示します。
- ERROR は、データの保存中のエラーまたは間違った構文を示します。
- EXISTS は、最後のフェッチ以降に誰かがCASデータを変更したことを示します。
- NOT_FOUND は、キーがMemcachedサーバーに存在しないことを示します。
例
MemcachedでCASコマンドを実行するには、Memcached getsコマンドからCASトークンを取得する必要があります。
Javaアプリケーションを使用したCAS
MemcachedサーバーからCASデータを取得するには、Memcached gets メソッドを使用する必要があります。
例
出力
プログラムをコンパイルして実行すると、次の出力が表示されます-
Memcached-データの取得
Memcached get コマンドを使用して、キーに保存されている値を取得します。 キーがMemcachedに存在しない場合、何も返しません。
構文
Memcached get コマンドの基本的な構文は以下のとおりです-
例
次の例では、finddevguidesをキーとして使用し、有効期限が900秒のmemcachedをキーに格納します。
Javaアプリケーションを使用してデータを取得する
Memcachedサーバーからデータを取得するには、Memcached get メソッドを使用する必要があります。
例
出力
プログラムをコンパイルして実行すると、次の出力が表示されます-
Memcached-CASデータを取得する
Memcached gets コマンドを使用して、CASトークンで値を取得します。 キーがMemcachedに存在しない場合、何も返しません。
構文
Memcached gets コマンドの基本的な構文は以下のとおりです-
例
この例では、finddevguidesをキーとして使用し、有効期限が900秒のmemcachedをキーに格納します。
Javaアプリケーションを使用してCASデータを取得する
MemcachedサーバーからCASデータを取得するには、Memcached gets メソッドを使用する必要があります。
例
出力
プログラムをコンパイルして実行すると、次の出力が表示されます-
Memcached-キーを削除
Memcached delete コマンドは、Memcachedサーバーから既存のキーを削除するために使用されます。
構文
Memcached delete コマンドの基本的な構文は以下のとおりです-
出力
CASコマンドは、次の結果のいずれかを生成することがあります-
- DELETED は正常な削除を示します。
- ERROR は、データの削除中のエラーまたは間違った構文を示します。
- NOT_FOUND は、キーがMemcachedサーバーに存在しないことを示します。
例
この例では、finddevguidesをキーとして使用し、有効期限が900秒のmemcachedをキーに格納します。 この後、保存されたキーを削除します。
Javaアプリケーションを使用したデータの削除
Memcachedサーバーからデータを削除するには、Memcached delete メソッドを使用する必要があります。
例
出力
プログラムをコンパイルして実行すると、次の出力が表示されます-
Memcached-データを削除する
Memcached delete コマンドは、Memcachedサーバーから既存のキーを削除するために使用されます。
構文
Memcached delete コマンドの基本的な構文は以下のとおりです-
キーが正常に削除されると、DELETEDが返されます。 キーが見つからない場合はNOT_FOUNDを返し、見つからない場合はERRORを返します。
例
この例では、finddevguidesをキーとして使用し、有効期限が900秒のmemcachedをキーに格納します。 この後、保存されたキーを削除します。
Javaアプリケーションを使用したデータの削除
Memcachedサーバーからデータを削除するには、Memcached delete メソッドを使用する必要があります。
例
出力
プログラムをコンパイルして実行すると、次の出力が表示されます-
Memcached-増分デクリメントデータ
Memcached incr および decr コマンドは、既存のキーの数値をインクリメントまたはデクリメントするために使用されます。 キーが見つからない場合、 NOT_FOUND を返します。 キーが数値でない場合、* CLIENT_ERRORは非数値をインクリメントまたはデクリメントできません*を返します。 それ以外の場合は、 ERROR が返されます。
構文-incr
Memcached incr コマンドの基本的な構文は以下のとおりです-
例
この例では、訪問者をキーとして使用し、最初に10を設定し、その後訪問者を5増やします。
構文-decr
Memcached decr コマンドの基本的な構文は次のとおりです。
例
Javaアプリケーションを使用したIncr/Decr
Memcachedサーバーのデータを増減するには、それぞれMemcached incrまたはdecr メソッドを使用する必要があります。
例
出力
プログラムをコンパイルして実行すると、次の出力が表示されます-
Memcached-統計
Memcached stats コマンドは、PID、バージョン、接続などのサーバー統計を返すために使用されます。
構文
Memcached stats コマンドの基本的な構文は以下のとおりです-
例
Javaアプリケーションを使用した統計
Memcachedサーバーから統計を取得するには、Memcached stats メソッドを使用する必要があります。
例
出力
プログラムをコンパイルして実行すると、次の出力が表示されます-
Memcached-統計アイテム
Memcached stats items コマンドは、カウント、年齢、立ち退きなどのアイテム統計を取得するために使用されます。 スラブIDで整理されています。
構文
Memcached stats items コマンドの基本的な構文は次のとおりです-
例
Memcached-統計スラブ
Memcached stats slabs コマンドは、サイズ、メモリ使用量、コマンド、カウントなどのスラブ統計を表示します。 スラブIDで整理されています。
構文
Memcached stats slabs コマンドの基本的な構文は以下のとおりです-
例
Memcached-統計サイズ
Memcached stats Sizes コマンドは、キャッシュ内の各サイズのアイテムのサイズと数に関する情報を提供します。 情報は2つの列に返されます。 最初の列はアイテムのサイズ(最も近い32バイト境界まで切り上げ)、2番目の列はキャッシュ内のそのサイズのアイテム数のカウントです。
構文
Memcached * statsサイズ*コマンドの基本的な構文は以下のとおりです-
例
アイテムサイズの統計は、保存しているオブジェクトのサイズを判断する場合にのみ役立ちます。 実際のメモリ割り当ては、チャンクサイズとページサイズの観点からのみ関連するため、この情報は、注意深いデバッグまたは診断セッション中にのみ役立ちます。
Memcached-データを消去
Memcached flush_all コマンドを使用して、Memcachedサーバーからすべてのデータ(キーと値のペア)を削除します。 Memcachedデータがクリアされるまでの時間を設定する time というオプションのパラメーターを受け入れます。
構文
Memcached flush_all コマンドの基本的な構文は以下のとおりです-
上記のコマンドは常にOKを返します。
例
次の例では、一部のデータをMemcachedサーバーに保存してから、すべてのデータを消去します。
Javaアプリケーションを使用したデータのクリア
Memcachedサーバーからデータを消去するには、Memcached flush メソッドを使用する必要があります。
例
出力
プログラムをコンパイルして実行すると、次の出力が表示されます-