CAS означает «проверить и установить» или «сравнить и заменить». Команда Memcached CAS используется для установки данных, если они не обновляются с момента последней выборки. Если ключ не существует в Memcached, то он возвращает NOT_FOUND .
Синтаксис
Основной синтаксис команды Memcached CAS показан ниже:
set key flags exptime bytes unique_cas_key [noreply] value
Ключевые слова в синтаксисе описаны ниже.
-
ключ — это имя ключа, по которому данные сохраняются и извлекаются из Memcached.
-
флаги — это 32-разрядное целое число без знака, которое сервер хранит вместе с данными, предоставленными пользователем, и возвращает вместе с данными при получении элемента.
-
exptime — время истечения в секундах. 0 означает отсутствие задержки. Если время экспозиции превышает 30 дней, Memcached использует его как метку времени UNIX для истечения срока действия.
-
байты — это количество байтов в блоке данных, которое необходимо сохранить. Это длина данных, которые должны храниться в Memcached.
-
unique_cas_key — это уникальный ключ, полученный командой get.
-
noreply (необязательно) — это параметр, который информирует сервер не отправлять ответ.
-
значение — это данные, которые должны быть сохранены. Данные должны быть переданы в новой строке после выполнения команды с вышеуказанными параметрами.
ключ — это имя ключа, по которому данные сохраняются и извлекаются из Memcached.
флаги — это 32-разрядное целое число без знака, которое сервер хранит вместе с данными, предоставленными пользователем, и возвращает вместе с данными при получении элемента.
exptime — время истечения в секундах. 0 означает отсутствие задержки. Если время экспозиции превышает 30 дней, Memcached использует его как метку времени UNIX для истечения срока действия.
байты — это количество байтов в блоке данных, которое необходимо сохранить. Это длина данных, которые должны храниться в Memcached.
unique_cas_key — это уникальный ключ, полученный командой get.
noreply (необязательно) — это параметр, который информирует сервер не отправлять ответ.
значение — это данные, которые должны быть сохранены. Данные должны быть переданы в новой строке после выполнения команды с вышеуказанными параметрами.
Выход
Вывод команды такой, как показано ниже —
STORED
-
STORED указывает на успех.
-
ОШИБКА указывает на ошибку при сохранении данных или неправильный синтаксис.
-
EXISTS указывает, что кто-то изменил данные CAS с момента последней выборки.
-
NOT_FOUND указывает, что ключ не существует на сервере Memcached.
STORED указывает на успех.
ОШИБКА указывает на ошибку при сохранении данных или неправильный синтаксис.
EXISTS указывает, что кто-то изменил данные CAS с момента последней выборки.
NOT_FOUND указывает, что ключ не существует на сервере Memcached.
пример
Чтобы выполнить команду CAS в Memcached, вам нужно получить токен CAS из команды Memcached gets.
cas tp 0 900 9 ERROR cas tp 0 900 9 2 memcached set tp 0 900 9 memcached STORED gets tp VALUE tp 0 9 1 memcached END cas tp 0 900 5 2 redis EXISTS cas tp 0 900 5 1 redis STORED get tp VALUE tp 0 5 redis END
CAS с использованием Java-приложения
Чтобы получить данные CAS с сервера Memcached, вам необходимо использовать метод Memcached gets .
пример
import net.spy.memcached.MemcachedClient; public class MemcachedJava { public static void main(String[] args) { // Connecting to Memcached server on localhost MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211)); System.out.println("Connection to server successful"); System.out.println("set status:"+mcc.set("tutorialspoint", 900, "memcached").isDone()); // Get cas token from cache long castToken = mcc.gets("tutorialspoint").cas; System.out.println("Cas token:"+castToken); // now set new data in memcached server System.out.println("Now set new data:"+mcc.cas("tutorialspoint", castToken, 900, "redis")); System.out.println("Get from Cache:"+mcc.get("tutorialspoint")); } }
Выход
При компиляции и выполнении программы вы увидите следующий вывод: