Spec-Zone .ru
спецификации, руководства, описания, API
|
Передача с memcached сервером может быть достигнута или через TCP или через протоколы UDP. При использовании протокола TCP можно использовать простой текст базируемый интерфейс для обмена информацией.
Связываясь с memcached, можно соединиться с сервером, используя порт, сконфигурированный для сервера. Можно открыть соединение с сервером, не требуя авторизации или входа в систему. Как только Вы соединились, можно начать отправлять команды серверу. Когда Вы закончили, можно завершить соединение, не отправляя определенной команды разъединения. Клиенты поощряются сохранить свои соединения открытыми, чтобы уменьшить задержку и улучшить производительность.
Данные отправляются memcached
сервер в двух формах:
Текстовые строки, которые используются, чтобы отправить команды серверу, и получить ответы от сервера.
Неструктурированные данные, которые используются, чтобы получить или отправить информацию о значении за данным ключом. Данные возвращаются клиенту в точно формате, это было обеспечено.
И текстовые строки (команды и ответы) и неструктурированные данные всегда завершаются со строкой \r\n
. Поскольку хранившие данные могут содержать эту последовательность, длину данных
(возвращенный клиентом прежде, чем неструктурированные данные будут переданы, должен использоваться, чтобы
определить конец данных.
Команды к серверу структурируются согласно их работе:
Команды хранения: set
,
add
, replace
, append
, prepend
, cas
Команды хранения к серверу принимают форму:
command key [flags] [exptime] length [noreply]
Или при использовании сравнивают и подкачивают (авария):
cas key [flags] [exptime] length [casunique] [noreply]
Где:
command
: Название команды.
set
: Значение хранилища против
ключа
add
: Сохраните это значение
против ключа, если ключ уже не существует
replace
: Сохраните это значение
против ключа, если ключ уже существует
append
: Добавьте
предоставленное значение до конца значения для указанного ключа. flags
и exptime
параметры не должны использоваться.
prepend
: Добавьте значение в
настоящий момент в кэше до конца предоставленного значения для указанного ключа.
flags
и exptime
параметры не должны использоваться.
cas
: Установите указанный ключ
к предоставленному значению, только если предоставленный casunique
соответствия. Это - эффективно эквивалент изменения информация, если никто не
обновил это, так как я длюсь, выбирал это.
key
: Ключ. Все данные хранятся, используя
определенный ключ. Ключ не может содержать управляющие символы или пробел, и может быть до
250 символов в размере.
flags
: Флаги для работы (как целое число).
Флаги в memcached прозрачны. memcached сервер игнорирует содержание
флагов. Они могут использоваться клиентом, чтобы указать на любой тип информации. В memcached 1.2.0 и ниже значение является
16-разрядным целочисленным значением. В memcached 1.2.1 и выше значение является
32-разрядным целым числом.
exptime
: Время истечения, или нуль ни для
какого истечения.
length
: Длина предоставленного значения
блокирует в байтах, исключая завершение \r\n
символы.
casunique
: Уникальное 64-разрядное значение
существующей записи. Это используется, чтобы сравниться с существующим значением.
Используйте значение, возвращенное gets
команда, выходя cas
обновления.
noreply
: Говорит серверу не отвечать на
команду.
Например, чтобы сохранить значение abcdef
в ключ xyzkey
,
Вы использовали бы:
set xyzkey 0 0 6\r\nabcdef\r\n
Возвращаемое значение от сервера является одной строкой, определяя информацию о состоянии или ошибке. Для получения дополнительной информации см. Таблицу 15.3, "memcached Ответы Протокола".
Команды извлечения: get
, gets
Команды извлечения принимают форму:
get key1 [key2 .... keyn]gets key1 [key2 ... keyn]
Можно предоставить многократные ключи к командам с каждым требуемым ключом, разделенным пробелом.
Сервер отвечает информационной строкой формы:
VALUE key flags bytes [casunique]
Где:
key
: Ключевое имя.
flags
: Значение целого числа флага,
предоставленного memcached серверу, когда
значение было сохранено.
bytes
: Размер (исключая завершение \r\n
символьная последовательность) хранимой суммы.
casunique
: Уникальное 64-разрядное целое
число, которое идентифицирует элемент.
Информационная строка сразу сопровождалась блоком данных значения. Например:
get xyzkey\r\nVALUE xyzkey 0 6\r\nabcdef\r\n
Если Вы запросили многократные ключи, информационная строка и блок данных возвращаются для каждого найденного ключа. Если требуемый ключ не существует в кэше, никакая информация не возвращается.
Удалите команды: delete
Команды удаления принимают форму:
delete key [time] [noreply]
Где:
key
: Ключевое имя.
time
: Время в секундах (или определенное
время Unix), для которого клиент хочет, чтобы сервер отказался add
или replace
команды на этом
ключе. Все add
, replace
, get
, и gets
в течение этого
периода перестали работать команды. set
операции успешно
выполняются. После этого периода ключ удаляется постоянно, и все команды принимаются.
Если не предоставленный, значение, как предполагается, является нулем (удалите сразу).
noreply
: Говорит серверу не отвечать на
команду.
Ответы на команду также DELETED
указать, что ключ был успешно удален,
или NOT_FOUND
указать, что указанный ключ не мог быть найден.
Инкремент/Декремент: incr
, decr
Инкремент и декрементные команды изменяются, значение ключа в пределах сервера, не выполняя отдельное получают/устанавливают последовательность. Операции предполагают, что в настоящий момент хранимая сумма является 64-разрядным целым числом. Если хранимая сумма не является 64-разрядным целым числом, то значение, как предполагается, является нулем перед инкрементом, или декрементная работа применяется.
Постепенно увеличьтесь и постепенно уменьшитесь, команды принимают форму:
incr key value [noreply]decr key value [noreply]
Где:
key
: Ключевое имя.
value
: Целое число, которое будет
использоваться в качестве инкремента или декрементного значения.
noreply
: Говорит серверу не отвечать на
команду.
Ответ:
NOT_FOUND
: Указанный ключ не мог быть
расположен.
value
: Новое значение связалось с указанным
ключом.
Значения, как предполагается, без знака. Для decr
операции, значение
никогда не постепенно уменьшается ниже 0. Для incr
операции, значение
переносит 64-разрядный максимум.
Команды статистики: stats
stats
команда предоставляет детализированную статистическую информацию о
текущем статусе memcached экземпляра и данных, которые
это хранит.
Команды статистики принимают форму:
STAT [name] [value]
Где:
name
: Дополнительное имя статистики, чтобы
возвратиться. Если не определенный, общие статистические данные возвращаются.
value
: Определенное значение, которое будет
использоваться, выполняя определенные операции статистики.
Возвращаемое значение является списком данных статистики, отформатированных следующим образом:
STAT name value
Статистические данные завершаются с одной строкой, END
.
Для получения дополнительной информации см. Раздел 15.6.4, "Получение memcached Статистика".
Для ссылки список различных поддерживаемых команд и их форматы обеспечивается ниже.
Таблица 15.2. Ссылка Команды memcached
Команда | Форматы команды |
---|---|
set |
set key flags exptime length , set key flags
exptime length noreply |
add |
add key flags exptime length , add key flags
exptime length noreply |
replace |
replace key flags exptime length , replace key
flags exptime length noreply |
append |
append key length , append key length
noreply |
prepend |
prepend key length , prepend key length
noreply |
cas |
cas key flags exptime length casunique , cas
key flags exptime length casunique noreply |
get |
get key1 [key2 ... keyn] |
gets |
|
delete |
delete key , delete key noreply , delete key expiry , delete key expiry
noreply |
incr |
incr key , incr key noreply , incr key value , incr key value noreply
|
decr |
decr key , decr key noreply , decr key value , decr key value noreply
|
stat |
stat , stat name , statname value |
Отправляя команду серверу, ответ от сервера является одной из настроек в следующей таблице. Все значения ответа
от сервера завершаются \r\n
:
Таблица 15.3. Ответы Протокола memcached
Строка | Описание |
---|---|
STORED |
Значение успешно было сохранено. |
NOT_STORED |
Значение не было сохранено, но не из-за ошибки. Для команд, где Вы добавляете a или обновляете
значение, если он существует (такой как add и replace ), или где элемент был уже установлен быть удаленным.
|
EXISTS |
При использовании a cas команда, элемент, который Вы пытаетесь
сохранить уже, существует и была изменена, так как Вы длитесь, проверял это.
|
NOT_FOUND |
Элемент, который Вы пытаетесь сохранить, обновить или удалить, не существует или был уже удален. |
ERROR |
Вы представили несуществующее название команды. |
CLIENT_ERROR errorstring |
Была ошибка во входной строке, деталь содержится в errorstring .
|
SERVER_ERROR errorstring |
Была ошибка в сервере, который препятствует тому, чтобы она возвратила информацию. В экстремальных условиях сервер может разъединить клиент после того, как эта ошибка происходит. |
VALUE keys flags length |
Требуемый ключ был найден, и сохраненное key , flags и блок данных возвращается, ofthe определенный length .
|
DELETED |
Требуемый ключ был удален из сервера. |
STAT name value |
Строка данных статистики. |
END |
Конец данных статистики. |