|
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 |
Конец данных статистики. |