Memcached — Обзор
Memcached — это высокопроизводительная распределенная система кэширования с открытым исходным кодом, предназначенная для ускорения работы динамических веб-приложений за счет снижения нагрузки на базу данных. Это словарь ключевых значений строк, объектов и т. Д., Хранящихся в памяти в результате вызовов базы данных, вызовов API или рендеринга страницы.
Memcached был разработан Брэдом Фитцпатриком для LiveJournal в 2003 году. Однако в настоящее время он используется Netlog, Facebook, Flickr, Wikipedia, Twitter и YouTube.
Ключевые особенности Memcached следующие:
-
Это с открытым исходным кодом.
-
Memcached сервер — это большая хеш-таблица.
-
Это значительно снижает нагрузку на базу данных
-
Это очень эффективно для сайтов с высокой нагрузкой на базу данных.
-
Он распространяется по лицензии Berkeley Software Distribution (BSD).
-
Это клиент-серверное приложение по TCP или UDP.
Это с открытым исходным кодом.
Memcached сервер — это большая хеш-таблица.
Это значительно снижает нагрузку на базу данных
Это очень эффективно для сайтов с высокой нагрузкой на базу данных.
Он распространяется по лицензии Berkeley Software Distribution (BSD).
Это клиент-серверное приложение по TCP или UDP.
Memcached нет —
-
постоянное хранилище данных
-
база данных
-
конкретное приложение
-
большой объектный кеш
-
отказоустойчивый или высокодоступный
постоянное хранилище данных
база данных
конкретное приложение
большой объектный кеш
отказоустойчивый или высокодоступный
Memcached — Окружающая среда
Установка Memcached в Ubuntu
Чтобы установить Memcached в Ubuntu, перейдите в терминал и введите следующие команды:
$sudo apt-get update $sudo apt-get install memcached
Подтверждение установки Memcached
Чтобы проверить, установлен Memcached или нет, вам нужно выполнить команду, приведенную ниже. Эта команда показывает, что Memcached работает на порте 11211 по умолчанию.
$ps aux | grep memcached
Чтобы запустить сервер Memcached на другом порту, выполните команду, приведенную ниже. Эта команда запускает сервер на TCP-порту 11111 и прослушивает UDP-порт 11111 как процесс-демон.
$memcached -p 11111 -U 11111 -u user -d
Вы можете запустить несколько экземпляров сервера Memcached с помощью одной установки.
Настройка среды Java Memcached
Чтобы использовать Memcached в вашей Java-программе, вам необходимо скачать spymemcached-2.10.3.jar и установить этот jar -файл в classpath.
Memcached — соединение
Чтобы подключиться к серверу Memcached, вам нужно использовать команду telnet для имен HOST и PORT.
Синтаксис
Основной синтаксис команды Memcached telnet показан ниже:
$telnet HOST PORT
Здесь HOST и PORT — это IP-адрес компьютера и номер порта, соответственно, на котором выполняется сервер Memcached.
пример
В следующем примере показано, как подключиться к серверу Memcached и выполнить простую команду set и get. Предположим, что сервер Memcached работает на хосте 127.0.0.1 и порте 11211.
$telnet 127.0.0.1 11211 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. // now store some data and get it from memcached server set tutorialspoint 0 900 9 memcached STORED get tutorialspoint VALUE tutorialspoint 0 9 memcached END
Подключение из Java-приложения
Чтобы подключить сервер Memcached из вашей java-программы, вам нужно добавить jar Memcached в ваш classpath, как показано в предыдущей главе. Предположим, что сервер Memcached работает на хосте 127.0.0.1 и порту 11211. —
пример
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 sucessfully"); //not set data into memcached server System.out.println("set status:"+mcc.set("tutorialspoint", 900, "memcached").done); //Get value from cache System.out.println("Get from Cache:"+mcc.get("tutorialspoint")); } }
Выход
При компиляции и выполнении программы вы увидите следующий вывод:
Connection to server successfully set status:true Get from Cache:memcached.
Терминал также может показывать несколько информационных сообщений, которые можно игнорировать.
Memcached — Установить данные
Команда Memcached set используется для установки нового значения для нового или существующего ключа.
Синтаксис
Основной синтаксис команды Memcached set показан ниже:
set key flags exptime bytes [noreply] value
Ключевые слова в синтаксисе, как описано ниже —
-
ключ — это имя ключа, по которому данные сохраняются и извлекаются из Memcached.
-
флаги — это 32-разрядное целое число без знака, которое сервер хранит вместе с данными, предоставленными пользователем, и возвращает вместе с данными при получении элемента.
-
exptime — время истечения в секундах. 0 означает отсутствие задержки. Если время экспозиции превышает 30 дней, Memcached использует его как метку времени UNIX для истечения срока действия.
-
байты — это количество байтов в блоке данных, которое необходимо сохранить. Это длина данных, которые должны храниться в Memcached.
-
noreply (необязательно) — это параметр, который информирует сервер не отправлять ответ.
-
значение — это данные, которые должны быть сохранены. Данные должны быть переданы в новой строке после выполнения команды с вышеуказанными параметрами.
ключ — это имя ключа, по которому данные сохраняются и извлекаются из Memcached.
флаги — это 32-разрядное целое число без знака, которое сервер хранит вместе с данными, предоставленными пользователем, и возвращает вместе с данными при получении элемента.
exptime — время истечения в секундах. 0 означает отсутствие задержки. Если время экспозиции превышает 30 дней, Memcached использует его как метку времени UNIX для истечения срока действия.
байты — это количество байтов в блоке данных, которое необходимо сохранить. Это длина данных, которые должны храниться в Memcached.
noreply (необязательно) — это параметр, который информирует сервер не отправлять ответ.
значение — это данные, которые должны быть сохранены. Данные должны быть переданы в новой строке после выполнения команды с вышеуказанными параметрами.
Выход
Вывод команды такой, как показано ниже —
STORED
-
STORED указывает на успех.
-
ОШИБКА указывает на неправильный синтаксис или ошибку при сохранении данных.
STORED указывает на успех.
ОШИБКА указывает на неправильный синтаксис или ошибку при сохранении данных.
пример
В следующем примере мы используем tutorialspoint в качестве ключа и устанавливаем в нем значение Memcached со сроком действия 900 секунд.
set tutorialspoint 0 900 9 memcached STORED get tutorialspoint VALUE tutorialspoint 0 9 Memcached END
Задать данные с помощью приложения Java
Чтобы установить ключ на сервере Memcached, вам нужно использовать метод set Memcached.
пример
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 sucessfully"); System.out.println("set status:"+mcc.set("tutorialspoint", 900, "memcached").done); // Get value from cache System.out.println("Get from Cache:"+mcc.get("tutorialspoint")); } }
Выход
При компиляции и выполнении программы вы увидите следующий вывод:
Connection to server successfully set status:true Get from Cache:memcached
Memcached — Добавить данные
Команда добавления Memcached используется для установки значения нового ключа. Если ключ уже существует, он выдает сообщение NOT_STORED.
Синтаксис
Основной синтаксис команды добавления Memcached показан ниже:
add key flags exptime bytes [noreply] value
Ключевые слова в синтаксисе, как описано ниже —
-
ключ — это имя ключа, по которому данные сохраняются и извлекаются из Memcached.
-
флаги — это 32-разрядное целое число без знака, которое сервер хранит вместе с данными, предоставленными пользователем, и возвращает вместе с данными при получении элемента.
-
exptime — время истечения в секундах. 0 означает отсутствие задержки. Если время экспозиции превышает 30 дней, Memcached использует его как метку времени UNIX для истечения срока действия.
-
байты — это количество байтов в блоке данных, которое необходимо сохранить. Это длина данных, которые должны храниться в Memcached.
-
noreply (необязательно) — это параметр, который информирует сервер не отправлять ответ.
-
значение — это данные, которые должны быть сохранены. Данные должны быть переданы в новой строке после выполнения команды с вышеуказанными параметрами.
ключ — это имя ключа, по которому данные сохраняются и извлекаются из Memcached.
флаги — это 32-разрядное целое число без знака, которое сервер хранит вместе с данными, предоставленными пользователем, и возвращает вместе с данными при получении элемента.
exptime — время истечения в секундах. 0 означает отсутствие задержки. Если время экспозиции превышает 30 дней, Memcached использует его как метку времени UNIX для истечения срока действия.
байты — это количество байтов в блоке данных, которое необходимо сохранить. Это длина данных, которые должны храниться в Memcached.
noreply (необязательно) — это параметр, который информирует сервер не отправлять ответ.
значение — это данные, которые должны быть сохранены. Данные должны быть переданы в новой строке после выполнения команды с вышеуказанными параметрами.
Выход
Вывод команды такой, как показано ниже —
STORED
-
STORED указывает на успех.
-
NOT_STORED указывает, что данные не сохраняются в Memcached.
STORED указывает на успех.
NOT_STORED указывает, что данные не сохраняются в Memcached.
пример
В следующем примере мы используем «ключ» в качестве ключа и добавляем в него значение Memcached со сроком действия 900 секунд.
add key 0 900 9 memcached STORED get key VALUE key 0 9 Memcached END
Выход из строя
add key 0 900 5 redis NOT_STORED
Добавить данные с помощью приложения Java
Чтобы добавить данные на сервер Memcached, вам нужно использовать метод add Memcached.
пример
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("add status:"+mcc.add("tutorialspoint", 900, "redis").done); System.out.println("add status:"+mcc.add("tp", 900, "redis").done); // Get value from cache System.out.println("Get from Cache tp:"+mcc.get("tp")); } }
Выход
При компиляции и выполнении программы вы увидите следующий вывод:
Connection to server successful add status:false add status:true Get from Cache tp:redis
Memcached — заменить данные
Команда замены Memcached используется для замены значения существующего ключа. Если ключ не существует, он выдает сообщение NOT_STORED.
Синтаксис
Основной синтаксис команды замены Memcached показан ниже:
replace key flags exptime bytes [noreply] value
Ключевые слова в синтаксисе, как описано ниже —
-
ключ — это имя ключа, по которому данные сохраняются и извлекаются из Memcached.
-
флаги — это 32-разрядное целое число без знака, которое сервер хранит вместе с данными, предоставленными пользователем, и возвращает вместе с данными при получении элемента.
-
exptime — время истечения в секундах. 0 означает отсутствие задержки. Если время экспозиции превышает 30 дней, Memcached использует его как метку времени UNIX для истечения срока действия.
-
байты — это количество байтов в блоке данных, которое необходимо сохранить. Это длина данных, которые должны храниться в Memcached.
-
noreply (необязательно) — это параметр, который информирует сервер не отправлять ответ.
-
значение — это данные, которые должны быть сохранены. Данные должны быть переданы в новой строке после выполнения команды с вышеуказанными параметрами.
ключ — это имя ключа, по которому данные сохраняются и извлекаются из Memcached.
флаги — это 32-разрядное целое число без знака, которое сервер хранит вместе с данными, предоставленными пользователем, и возвращает вместе с данными при получении элемента.
exptime — время истечения в секундах. 0 означает отсутствие задержки. Если время экспозиции превышает 30 дней, Memcached использует его как метку времени UNIX для истечения срока действия.
байты — это количество байтов в блоке данных, которое необходимо сохранить. Это длина данных, которые должны храниться в Memcached.
noreply (необязательно) — это параметр, который информирует сервер не отправлять ответ.
значение — это данные, которые должны быть сохранены. Данные должны быть переданы в новой строке после выполнения команды с вышеуказанными параметрами.
Выход
Вывод команды такой, как показано ниже —
STORED
-
STORED указывает на успех.
-
NOT_STORED указывает, что данные не сохраняются в Memcached.
STORED указывает на успех.
NOT_STORED указывает, что данные не сохраняются в Memcached.
пример
В следующем примере мы используем «ключ» в качестве ключа и сохраняем в нем memcached со сроком действия 900 секунд. После этого тот же ключ заменяется значением ‘redis’.
add key 0 900 9 memcached STORED get key VALUE key 0 9 memcached END replace key 0 900 5 redis get key VALUE key 0 5 redis END
Заменить данные с помощью приложения Java
Чтобы заменить данные на сервере Memcached, вам нужно использовать метод замены Memcached.
пример
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 sucessfully"); System.out.println("set status:"+mcc.set("tutorialspoint", 900, "memcached").done); // Get value from cache System.out.println("Get from Cache:"+mcc.get("tutorialspoint")); // now replace the existing data System.out.println("Replace cache:"+mcc.replace("tutorialspoint", 900, "redis").done); // get the updated data System.out.println("Get from Cache:"+mcc.get("tutorialspoint")); } }
Выход
При компиляции и выполнении программы вы увидите следующий вывод:
Connection to server successfully set status:true Get from Cache:memcached Replace cache:true Get from Cache:redis
Memcached — Добавить данные
Команда Memcached append используется для добавления некоторых данных в существующий ключ. Данные сохраняются после существующих данных ключа.
Синтаксис
Основной синтаксис команды добавления в Memcached показан ниже:
append key flags exptime bytes [noreply] value
Ключевые слова в синтаксисе описаны ниже.
-
ключ — это имя ключа, по которому данные сохраняются и извлекаются из Memcached.
-
флаги — это 32-разрядное целое число без знака, которое сервер хранит вместе с данными, предоставленными пользователем, и возвращает вместе с данными при получении элемента.
-
exptime — время истечения в секундах. 0 означает отсутствие задержки. Если время экспозиции превышает 30 дней, Memcached использует его как метку времени UNIX для истечения срока действия.
-
байты — это количество байтов в блоке данных, которое необходимо сохранить. Это длина данных, которые должны храниться в Memcached.
-
noreply (необязательно) — это параметр, который сообщает серверу не отправлять ответ.
-
значение — это данные, которые должны быть сохранены. Данные должны быть переданы в новой строке после выполнения команды с вышеуказанными параметрами.
ключ — это имя ключа, по которому данные сохраняются и извлекаются из Memcached.
флаги — это 32-разрядное целое число без знака, которое сервер хранит вместе с данными, предоставленными пользователем, и возвращает вместе с данными при получении элемента.
exptime — время истечения в секундах. 0 означает отсутствие задержки. Если время экспозиции превышает 30 дней, Memcached использует его как метку времени UNIX для истечения срока действия.
байты — это количество байтов в блоке данных, которое необходимо сохранить. Это длина данных, которые должны храниться в Memcached.
noreply (необязательно) — это параметр, который сообщает серверу не отправлять ответ.
значение — это данные, которые должны быть сохранены. Данные должны быть переданы в новой строке после выполнения команды с вышеуказанными параметрами.
Выход
Вывод команды такой, как показано ниже —
STORED
-
STORED указывает на успех.
-
NOT_STORED указывает, что ключ не существует на сервере Memcached.
-
CLIENT_ERROR указывает на ошибку.
STORED указывает на успех.
NOT_STORED указывает, что ключ не существует на сервере Memcached.
CLIENT_ERROR указывает на ошибку.
пример
В следующем примере мы пытаемся добавить некоторые данные в ключ, который не существует. Следовательно, Memcached возвращает NOT_STORED . После этого мы устанавливаем один ключ и добавляем в него данные.
append tutorials 0 900 5 redis NOT_STORED set tutorials 0 900 9 memcached STORED get tutorials VALUE tutorials 0 14 memcached END append tutorials 0 900 5 redis STORED get tutorials VALUE tutorials 0 14 memcachedredis END
Добавить данные с помощью приложения Java
Чтобы добавить данные на сервер Memcached, вам нужно использовать метод добавления Memcached.
пример
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 value from cache System.out.println("Get from Cache:"+mcc.get("tutorialspoint")); // now append some data into existing key System.out.println("Append to cache:"+mcc.append("tutorialspoint", "redis").isDone()); // get the updated key System.out.println("Get from Cache:"+mcc.get("tutorialspoint")); } }
Выход
При компиляции и выполнении программы вы увидите следующий вывод:
Connection to server successful set status:true Get from Cache:memcached Append to cache:true Get from Cache:memcachedredis
Memcached — Prepend Data
Команда Memcached prepend используется для добавления некоторых данных в существующий ключ. Данные хранятся до существующих данных ключа.
Синтаксис
Основной синтаксис команды Memcached prepend показан ниже:
prepend key flags exptime bytes [noreply] value
Ключевые слова в синтаксисе описаны ниже.
-
Ключ — это имя ключа, по которому данные хранятся и извлекаются в Memcached.
-
флаги — это 32-разрядное целое число без знака, которое сервер хранит вместе с данными, предоставленными пользователем, и возвращает вместе с данными при получении элемента.
-
exptime — время истечения в секундах. 0 означает отсутствие задержки. Если время экспозиции превышает 30 дней, Memcached использует его как метку времени UNIX для истечения срока действия.
-
байты — это количество байтов в блоке данных, которое необходимо сохранить. Это длина данных, которые должны храниться в Memcached.
-
noreply (необязательно) — это параметр, который информирует сервер не отправлять никакого ответа.
-
значение — это данные, которые должны быть сохранены. Данные должны быть переданы в новой строке после выполнения команды с вышеуказанными параметрами.
Ключ — это имя ключа, по которому данные хранятся и извлекаются в Memcached.
флаги — это 32-разрядное целое число без знака, которое сервер хранит вместе с данными, предоставленными пользователем, и возвращает вместе с данными при получении элемента.
exptime — время истечения в секундах. 0 означает отсутствие задержки. Если время экспозиции превышает 30 дней, Memcached использует его как метку времени UNIX для истечения срока действия.
байты — это количество байтов в блоке данных, которое необходимо сохранить. Это длина данных, которые должны храниться в Memcached.
noreply (необязательно) — это параметр, который информирует сервер не отправлять никакого ответа.
значение — это данные, которые должны быть сохранены. Данные должны быть переданы в новой строке после выполнения команды с вышеуказанными параметрами.
Выход
Вывод команды такой, как показано ниже —
STORED
-
STORED указывает на успех.
-
NOT_STORED указывает, что ключ не существует на сервере Memcached.
-
CLIENT_ERROR указывает на ошибку.
STORED указывает на успех.
NOT_STORED указывает, что ключ не существует на сервере Memcached.
CLIENT_ERROR указывает на ошибку.
пример
В следующем примере мы добавляем некоторые данные в ключ, который не существует. Следовательно, Memcached возвращает NOT_STORED . После этого мы устанавливаем один ключ и добавляем в него данные.
prepend tutorials 0 900 5 redis NOT_STORED set tutorials 0 900 9 memcached STORED get tutorials VALUE tutorials 0 14 memcached END prepend tutorials 0 900 5 redis STORED get tutorials VALUE tutorials 0 14 redismemcached END
Prepend данных с помощью приложения Java
Чтобы добавить данные на сервер Memcached, вам необходимо использовать метод prepend Memcached.
пример
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 value from cache System.out.println("Get from Cache:"+mcc.get("tutorialspoint")); // now append some data into existing key System.out.println("Prepend to cache:"+mcc.prepend("tutorialspoint", "redis").isDone()); // get the updated key System.out.println("Get from Cache:"+mcc.get("tutorialspoint")); } }
Выход
При компиляции и выполнении программы вы увидите следующий вывод:
Connection to server successful set status:true Get from Cache:memcached Prepend to cache:true Get from Cache:redismemcached
Memcached — команда CAS
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")); } }
Выход
При компиляции и выполнении программы вы увидите следующий вывод:
Connection to server successful set status:true Cas token:3 Now set new data:OK Get from Cache:redis
Memcached — получить данные
Команда getcached get используется для получения значения, хранящегося в ключе. Если ключ не существует в Memcached, то он ничего не возвращает.
Синтаксис
Основной синтаксис команды get в Memcached показан ниже:
get key
пример
В следующем примере мы используем tutorialspoint в качестве ключа и сохраняем в нем memcached со сроком действия 900 секунд.
set tutorialspoint 0 900 9 memcached STORED get tutorialspoint VALUE tutorialspoint 0 9 memcached END
Получить данные с помощью приложения Java
Чтобы получить данные с сервера Memcached, вам нужно использовать метод get Memcached.
пример
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 sucessfully"); System.out.println("set status:"+mcc.set("tutorialspoint", 900, "memcached").done); // Get value from cache System.out.println("Get from Cache:"+mcc.get("tutorialspoint")); } }
Выход
При компиляции и выполнении программы вы увидите следующий вывод:
Connection to server successfully set status:true Get from Cache:memcached
Memcached — получить данные CAS
Команда Memcached gets используется для получения значения с токеном CAS. Если ключ не существует в Memcached, то он ничего не возвращает.
Синтаксис
Основной синтаксис команды Memcached gets показан ниже:
get key
пример
set tutorialspoint 0 900 9 memcached STORED gets tutorialspoint VALUE tutorialspoint 0 9 1 memcached END
В этом примере мы используем tutorialspoint в качестве ключа и храним в нем memcached со сроком действия 900 секунд.
Получить данные 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 sucessfully"); System.out.println("set status:"+mcc.set("tutorialspoint", 900, "memcached").done); // Get value from cache System.out.println("Get from Cache:"+mcc.gets("tutorialspoint")); } }
Выход
При компиляции и выполнении программы вы увидите следующий вывод:
Connection to server successfully set status:true Get from Cache:{CasValue 2/memcached}
Memcached — Удалить ключ
Команда удаления Memcached используется для удаления существующего ключа с сервера Memcached.
Синтаксис
Основной синтаксис команды удаления Memcached показан ниже:
delete key [noreply]
Выход
Команда CAS может выдать один из следующих результатов:
-
DELETED указывает на успешное удаление.
-
ОШИБКА указывает на ошибку при удалении данных или неправильный синтаксис.
-
NOT_FOUND указывает, что ключ не существует на сервере Memcached.
DELETED указывает на успешное удаление.
ОШИБКА указывает на ошибку при удалении данных или неправильный синтаксис.
NOT_FOUND указывает, что ключ не существует на сервере Memcached.
пример
В этом примере мы используем tutorialspoint в качестве ключа и храним в нем memcached со сроком действия 900 секунд. После этого он удаляет сохраненный ключ.
set tutorialspoint 0 900 9 memcached STORED get tutorialspoint VALUE tutorialspoint 0 9 memcached END delete tutorialspoint DELETED get tutorialspoint END delete tutorialspoint NOT_FOUND
Удалить данные с помощью приложения Java
Чтобы удалить данные с сервера Memcached, вам нужно использовать метод удаления Memcached.
пример
import java.net.InetSocketAddress; import java.util.concurrent.Future; import net.spy.memcached.MemcachedClient; public class MemcachedJava { public static void main(String[] args) { try{ // Connecting to Memcached server on localhost MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211)); System.out.println("Connection to server sucessful."); // add data to memcached server Future fo = mcc.set("tutorialspoint", 900, "World's largest online tutorials library"); // print status of set method System.out.println("set status:" + fo.get()); // retrieve and check the value from cache System.out.println("tutorialspoint value in cache - " + mcc.get("tutorialspoint")); // try to add data with existing key Future fo = mcc. delete ("tutorialspoint"); // print status of delete method System.out.println("delete status:" + fo.get()); // retrieve and check the value from cache System.out.println("tutorialspoint value in cache - " + mcc.get("codingground")); // Shutdowns the memcached client mcc.shutdown(); }catch(Exception ex) System.out.println(ex.getMessage()); } }
Выход
При компиляции и выполнении программы вы увидите следующий вывод:
Connection to server successful set status:true tutorialspoint value in cache - World's largest online tutorials library delete status:true tutorialspoint value in cache - null
Memcached — Удалить данные
Команда удаления Memcached используется для удаления существующего ключа с сервера Memcached.
Синтаксис
Основной синтаксис команды удаления Memcached показан ниже:
delete key
Если ключ успешно удален, он возвращает DELETED. Если ключ не найден, он возвращает NOT_FOUND, в противном случае он возвращает ERROR.
пример
В этом примере мы используем tutorialspoint в качестве ключа и храним в нем memcached со сроком действия 900 секунд. После этого он удаляет сохраненный ключ.
set tutorialspoint 0 900 9 memcached STORED get tutorialspoint VALUE tutorialspoint 0 9 memcached END delete tutorialspoint DELETED get tutorialspoint END delete tutorialspoint NOT_FOUND
Удалить данные с помощью приложения Java
Чтобы удалить данные с сервера Memcached, вам нужно использовать метод удаления Memcached.
пример
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").done); // Get value from cache System.out.println("Get from Cache:"+mcc.get("tutorialspoint")); // delete value from cache System.out.println("Delete from Cache:"+mcc.delete("tutorialspoint").isDone()); // check whether value exists or not System.out.println("Get from Cache:"+mcc.get("tutorialspoint")); } }
Выход
При компиляции и выполнении программы вы увидите следующий вывод:
Connection to server successful set status:true Get from Cache:memcached Delete from Cache:true Get from Cache:null
Memcached — инкремент данных декремента
Memcached incr и decr команды используются для увеличения или уменьшения числового значения существующего ключа. Если ключ не найден, он возвращает NOT_FOUND . Если ключ не является числовым, то он возвращает CLIENT_ERROR не может увеличивать или уменьшать нечисловое значение . В противном случае ОШИБКА возвращается.
Синтаксис — incr
Основной синтаксис команды Memcached incr показан ниже:
incr key increment_value
пример
В этом примере мы используем посетителей в качестве ключа и устанавливаем в него изначально 10, а затем увеличиваем посетителей на 5.
set visitors 0 900 2 10 STORED get visitors VALUE visitors 0 2 10 END incr visitors 5 15 get visitors VALUE visitors 0 2 15 END
Синтаксис — decr
Основной синтаксис команды Memcached decr показан ниже.
decr key decrement_value
пример
set visitors 0 900 2 10 STORED get visitors VALUE visitors 0 2 10 END decr visitors 5 5 get visitors VALUE visitors 0 1 5 END
Incr / Decr Использование Java-приложения
Чтобы увеличить или уменьшить данные на сервере Memcached, вам необходимо использовать методы Memcached incr или decr соответственно.
пример
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 sucessfully"); System.out.println("set status:"+mcc.set("count", 900, "5").isDone()); // Get value from cache System.out.println("Get from Cache:"+mcc.get("count")); // now increase the stored value System.out.println("Increment value:"+mcc.incr("count", 2)); // now decrease the stored value System.out.println("Decrement value:"+mcc.decr("count", 1)); // now get the final stored value System.out.println("Get from Cache:"+mcc.get("count")); } }
Выход
При компиляции и выполнении программы вы увидите следующий вывод:
Connection to server successfully set status:true Get from Cache:5 Increment value:7 Decrement value:6 Get from Cache:6
Memcached — Статистика
Команда Memcached stats используется для возврата статистики сервера, такой как PID, версия, соединения и т. Д.
Синтаксис
Основной синтаксис команды Memcached stats показан ниже:
stats
пример
stats STAT pid 1162 STAT uptime 5022 STAT time 1415208270 STAT version 1.4.14 STAT libevent 2.0.19-stable STAT pointer_size 64 STAT rusage_user 0.096006 STAT rusage_system 0.152009 STAT curr_connections 5 STAT total_connections 6 STAT connection_structures 6 STAT reserved_fds 20 STAT cmd_get 6 STAT cmd_set 4 STAT cmd_flush 0 STAT cmd_touch 0 STAT get_hits 4 STAT get_misses 2 STAT delete_misses 1 STAT delete_hits 1 STAT incr_misses 2 STAT incr_hits 1 STAT decr_misses 0 STAT decr_hits 1 STAT cas_misses 0 STAT cas_hits 0 STAT cas_badval 0 STAT touch_hits 0 STAT touch_misses 0 STAT auth_cmds 0 STAT auth_errors 0 STAT bytes_read 262 STAT bytes_written 313 STAT limit_maxbytes 67108864 STAT accepting_conns 1 STAT listen_disabled_num 0 STAT threads 4 STAT conn_yields 0 STAT hash_power_level 16 STAT hash_bytes 524288 STAT hash_is_expanding 0 STAT expired_unfetched 1 STAT evicted_unfetched 0 STAT bytes 142 STAT curr_items 2 STAT total_items 6 STAT evictions 0 STAT reclaimed 1 END
Статистика Использование Java-приложения
Чтобы получить статистику с сервера Memcached, вам нужно использовать метод статистики Memcached.
пример
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("Stats:"+mcc.stats); } }
Выход
При компиляции и выполнении программы вы увидите следующий вывод:
Connection to server successful Stats:[/127.0.0.1:11211:[delete_hits:0, bytes:71, total_items:4, rusage_system:0.220013, touch_misses:0, cmd_touch:0, listen_disabled_num:0, auth_errors:0, evictions:0, version:1.4.14, pointer_size:64, time:1417279366, incr_hits:1, threads:4, expired_unfetched:0, limit_maxbytes:67108864, hash_is_expanding:0, bytes_read:170, curr_connections:8, get_misses:1, reclaimed:0, bytes_written:225, hash_power_level:16, connection_structures:9, cas_hits:0, delete_misses:0, total_connections:11, rusage_user:0.356022, cmd_flush:0, libevent:2.0.19-stable, uptime:12015, reserved_fds:20, touch_hits:0, cas_badval:0, pid:1138, get_hits:2, curr_items:1, cas_misses:0, accepting_conns:1, evicted_unfetched:0, cmd_get:3, cmd_set:2, auth_cmds:0, incr_misses:1, hash_bytes:524288, decr_misses:1, decr_hits:1, conn_yields:0]]
Memcached — Статистика предметов
Команда Memcached stats items используется для получения статистики предметов, таких как количество, возраст, выселение и т. Д., Организованных по идентификатору слябов.
Синтаксис
Основной синтаксис команды Memcached stats items показан ниже:
stats items
пример
stats items STAT items:1:number 1 STAT items:1:age 7 STAT items:1:evicted 0 STAT items:1:evicted_nonzero 0 STAT items:1:evicted_time 0 STAT items:1:outofmemory 0 STAT items:1:tailrepairs 0 STAT items:1:reclaimed 0 STAT items:1:expired_unfetched 0 STAT items:1:evicted_unfetched 0 END
Memcached — Stats Slabs
Команда Memcached stats slabs отображает статистику слябов, такую как размер, использование памяти, команды, количество и т. Д., Упорядоченные по идентификатору слябов.
Синтаксис
Основной синтаксис команды Memcached stats slabs показан ниже:
stats slabs
пример
stats slabs STAT 1:chunk_size 96 STAT 1:chunks_per_page 10922 STAT 1:total_pages 1 STAT 1:total_chunks 10922 STAT 1:used_chunks 1 STAT 1:free_chunks 10921 STAT 1:free_chunks_end 0 STAT 1:mem_requested 71 STAT 1:get_hits 0 STAT 1:cmd_set 1 STAT 1:delete_hits 0 STAT 1:incr_hits 0 STAT 1:decr_hits 0 STAT 1:cas_hits 0 STAT 1:cas_badval 0 STAT 1:touch_hits 0 STAT active_slabs 1 STAT total_malloced 1048512 END
Memcached — Статистика Размеры
Команда Memcached stats sizes предоставляет информацию о размерах и количестве элементов каждого размера в кеше. Информация возвращается в двух столбцах. Первый столбец — это размер элемента (округленный до ближайшей 32-байтовой границы), а второй столбец — это количество элементов этого размера в кэше.
Синтаксис
Основной синтаксис команды Memcached stats sizes показан ниже:
stats sizes
пример
stats sizes STAT 96 1 END
Статистика размеров элементов полезна только для определения размеров объектов, которые вы храните. Поскольку фактическое выделение памяти имеет отношение только к размеру чанка и размеру страницы, информация полезна только во время тщательного сеанса отладки или диагностики.
Memcached — очистить данные
Команда memcached flush_all используется для удаления всех данных (пар ключ-значение) с сервера Memcached. Он принимает необязательный параметр time, который устанавливает время, после которого данные Memcached должны быть очищены.
Синтаксис
Основной синтаксис команды Memcached flush_all показан ниже:
flush_all [time] [noreply]
Приведенная выше команда всегда возвращает ОК.
пример
В следующем примере мы сохраняем некоторые данные на сервере Memcached, а затем очищаем все данные.
set tutorialspoint 0 900 9 memcached STORED get tutorialspoint VALUE tutorialspoint 0 9 memcached END flush_all OK get tutorialspoint END
Очистить данные с помощью приложения Java
Чтобы очистить данные с сервера Memcached, вам необходимо использовать метод очистки Memcached.
пример
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 sucessfully"); System.out.println("set status:"+mcc.set("count", 900, "5").isDone()); // Get value from cache System.out.println("Get from Cache:"+mcc.get("count")); // now increase the stored value System.out.println("Increment value:"+mcc.incr("count", 2)); // now decrease the stored value System.out.println("Decrement value:"+mcc.decr("count", 1)); // now get the final stored value System.out.println("Get from Cache:"+mcc.get("count")); // now clear all this data System.out.println("Clear data:"+mcc.flush().isDone()); } }
Выход
При компиляции и выполнении программы вы увидите следующий вывод: