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 に一致しなかったので、更新しなかった |