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 サービス上にそのキーと値が存在しません。
その他の拡張