Memcached CAS コマンド
Memcached CAS(Check-And-Set または Compare-And-Swap)コマンドは、「チェックして設定する」操作を実行するために使用されます。
現在のクライアントが最後に値を取得した後、そのkeyに対応する値が他のクライアントによって変更されていない場合にのみ、値を書き込むことができます。
チェックはcas_tokenパラメータによって行われます。このパラメータは、Memcachが既存の要素に指定する一意の64ビット値です。
構文:
CAS コマンドの基本的な構文形式は次のとおりです。
cas key flags exptime bytes unique_cas_token [noreply] value
パラメータの説明は次のとおりです。
- key:キーと値の key-value 構造における key で、キャッシュ値を検索するために使用されます。
- flags:キーと値のペアを含むことができる整数パラメータで、クライアントはこれを使用してキーと値のペアに関する追加情報を保存します。
- exptime:キャッシュ内でキーと値のペアを保存する時間の長さ(秒単位、0 は無期限)
- bytes:キャッシュに保存されるバイト数
- unique_cas_tokengets コマンドによって取得される一意の64ビット値です。
- noreply(オプション):このパラメータは、サーバーがデータを返す必要がないことを通知します。
- value:保存される値(常に2行目にあります)(key-value構造のvalueと直接理解できます)
例
Memcached で CAS コマンドを使用するには、Memcached サービスプロバイダから gets コマンドを使用してトークン(token)を取得する必要があります。
gets コマンドの機能は基本的な get コマンドに似ています。2つのコマンドの違いは、gets が返す情報が少し多いことです。64ビットの整数値は、名前と値のペアの「バージョン」識別子によく似ています。
手順の例は次のとおりです。
- 一意のトークンが設定されていない場合、CAS コマンドはエラーとなります。
- キー key が存在しない場合、実行は失敗します。
- キーと値のペアを追加します。
- gets コマンドによって一意のトークンを取得します。
- cas コマンドを使用してデータを更新します。
- get コマンドを使用してデータが更新されたかどうかを確認します。
cas tp 0 900 9 ERROR <− 缺少 token cas tp 0 900 9 2 memcached NOT_FOUND <− 键 tp 不存在 set tp 0 900 9 memcached STORED gets tp VALUE tp 0 9 1 memcached END cas tp 0 900 5 1 redis STORED get tp VALUE tp 0 5 redis END
出力
データの追加が成功した場合、次のように出力されます。
STORED
出力情報の説明:
- STORED:保存が成功した後に出力されます。
- ERROR:保存エラーまたは構文エラー。
- EXISTS:最後に値を取得した後、別のユーザーもそのデータを更新しています。
- NOT_FOUND:Memcached サービス上にそのキーと値が存在しません。