Ответ 1
CAS фактически означает check-and-set и является методом оптимистической блокировки. Значение или идентификатор CAS связаны с каждым документом, который обновляется всякий раз, когда изменяется документ - немного напоминает идентификатор ревизии. Цель состоит в том, что вместо пессимистической блокировки документа (и связанных с ним издержек на блокировку) вы просто читаете его значение CAS, а затем выполняете только запись, если соответствует CAS.
Общий прецедент:
- Прочитайте существующий документ и получите его текущий CAS (
get_with_cas
) - Подготовьте новое значение для этого документа, предполагая, что никто другой не изменил документ (и, следовательно, вызвал изменение CAS).
- Запишите документ с помощью операции
check_and_set
, указав значение CAS из (1).
Шаг 3 будет успешным (выполнить запись), если документ не изменится между (1) и (3) - то есть ни один другой пользователь не изменил его тем временем. Обычно, если (3) не работает, вы должны повторить всю последовательность (get_with_cas
, modify, check_and_set
).
Здесь содержится более подробное описание check-and-set в Руководстве разработчика Couchbase в разделе Check and Set (CAS).