Учебники

Memcached — Краткое руководство

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());
   }
}

Выход

При компиляции и выполнении программы вы увидите следующий вывод: