cas

cas

casコマンドは、kvspace の値を比較し、一致すれば値を更新する。

例えば old=1, val=2 で cas をする場合、


といった処理を排他的に行う。 同じリクエストが同時に発生したとしても、最初に処理されるリクエストのみが現在値==1 に一致して処理され、後のリクエストは何もしない。これはロックと同様に排他的な更新を実現することができる。

なお、処理が行われたかどうかは、戻り値を見ればわかる。

RequestMessage プロパティ 内容
  command CMD_CAS
  key キー
  old 比較する値
  val 更新する値
ResponseMessage プロパティ 内容
  command CMD_CAS
  key キー
  result CAS前の値
error 意味
  ERR_UNMATCH 値が old に一致しなかったので、更新しなかった