update page now

Предопределённые константы

Следующие константы определяются модулем и доступны, только если модуль либо собрали в PHP, либо динамически загрузили при выполнении кода.

Memcached::OPT_COMPRESSION
Включает или отключает сжатие полезных данных. При включении значения элементов, превышающие определённый порог (в настоящее время 2000 байт), будут сжиматься при хранении и декомпрессироваться при извлечении прозрачным образом. Порог можно настроить с помощью ini-параметра memcached.compression_threshold.

Тип: bool, по умолчанию: true.

Memcached::OPT_COMPRESSION_TYPE
Указывает алгоритм сжатия, который будет использоваться, если сжатие включено. Допустимые алгоритмы: Memcached::COMPRESSION_FASTLZ, Memcached::COMPRESSION_ZLIB и Memcached::COMPRESSION_ZSTD.

Тип: int, по умолчанию: Memcached::COMPRESSION_FASTLZ.

Memcached::COMPRESSION_FASTLZ
Алгоритм сжатия FASTLZ.
Memcached::COMPRESSION_ZLIB
Алгоритм сжатия ZLIB.
Memcached::COMPRESSION_ZSTD
Алгоритм сжатия ZSTD. Доступно с Memcached 3.3.0.
Memcached::OPT_COMPRESSION_LEVEL
Указывает уровень сжатия, который будет использоваться, если сжатие включено.

Тип: int, по умолчанию: 3.

Memcached::OPT_SERIALIZER
Указывает сериализатор, который будет использоваться для сериализации нескалярных значений. Допустимые сериализаторы: Memcached::SERIALIZER_PHP, Memcached::SERIALIZER_IGBINARY, Memcached::SERIALIZER_JSON, Memcached::SERIALIZER_JSON_ARRAY и Memcached::SERIALIZER_MSGPACK.

Тип: int, по умолчанию: Memcached::SERIALIZER_IGBINARY если доступно, затем Memcached::SERIALIZER_MSGPACK если доступно, затем Memcached::SERIALIZER_PHP.

Memcached::SERIALIZER_PHP

Сериализатор PHP по умолчанию.

Memcached::SERIALIZER_IGBINARY
Сериализатор igbinary. Вместо текстового представления он хранит структуры данных PHP в компактной двоичной форме, что позволяет сэкономить место и время. Сериализатор поддерживается только в том случае, если memcached настроен с помощью опции --enable-memcached-igbinary и загружен модуль igbinary.
Memcached::SERIALIZER_JSON

Сериализатор JSON. Сериализатор десериализует JSON в объект.

Memcached::SERIALIZER_JSON_ARRAY
Сериализатор массива JSON. Сериализатор десериализует JSON в ассоциативный массив.
Memcached::SERIALIZER_MSGPACK
Сериализатор » MessagePack. Сериализатор поддерживается только в том случае, если memcached настроен с помощью опции --enable-memcached-msgpack и загружен модуль msgpack.
Memcached::OPT_PREFIX_KEY
Используется для создания "домена" для ваших ключей. Заданное здесь значение будет использоваться в качестве префикса для всех ключей. Значение не может быть длиннее 128 символов и, соответственно, максимальная длина ключей будет уменьшена. Префикс применяется только для обычных ключей, но не для серверных ключей.

Тип: string, по умолчанию: "".

Memcached::OPT_HASH
Задаёт алгоритм хеширования для ключей. Можно задавать константами Memcached::HASH_*. Каждый алгоритм хеширования имеет свои достоинства и недостатки. Используйте значение по умолчанию, если не уверены или вам всё равно.

Тип: int, по умолчанию: Memcached::HASH_DEFAULT

Memcached::HASH_DEFAULT

Алгоритм хеширования ключей по умолчанию (Jenkins one-at-a-time).

Memcached::HASH_MD5

Алгоритм хеширования ключей MD5.

Memcached::HASH_CRC

Алгоритм хеширования ключей CRC.

Memcached::HASH_FNV1_64

Алгоритм хеширования ключей FNV1_64.

Memcached::HASH_FNV1A_64

Алгоритм хеширования ключей FNV1_64A.

Memcached::HASH_FNV1_32

Алгоритм хеширования ключей FNV1_32.

Memcached::HASH_FNV1A_32

Алгоритм хеширования ключей FNV1_32A.

Memcached::HASH_HSIEH

Алгоритм хеширования ключей Hsieh.

Memcached::HASH_MURMUR

Алгоритм хеширования ключей Murmur.

Memcached::OPT_DISTRIBUTION
Задаёт способ распределения ключей по серверам. В данный момент поддерживаются методы модульного и консистентного хеширования. Консистентное хеширование даёт лучшее распределение и позволяет добавлять сервера в кластер с минимальными потерями кеша.

Тип: int, по умолчанию: Memcached::DISTRIBUTION_MODULA.

Memcached::DISTRIBUTION_MODULA

Модульный алгоритм распределения ключей.

Memcached::DISTRIBUTION_CONSISTENT

Алгоритм распределения ключей "Консистентное хеширование" (базируется на libketama).

Memcached::DISTRIBUTION_VIRTUAL_BUCKET
Алгоритм распределения хеш-ключей Virtual Bucket (также называемый vbucket).
Memcached::OPT_LIBKETAMA_COMPATIBLE

Включает или отключает совместимость с поведением типа libketama. Если включено, то алгоритм хеширования ключей устанавливается в MD5 и распределение ключей в режим консистентного хеширования на базе весов. Это полезно потому, что другие клиенты с поведением типа libketama (Python, Ruby и т.д.) с такими же настройками сервера смогут получить прозрачный доступ к ключам.

Замечание:

Крайне рекомендуется включить эту опцию если вы хотите использовать консистентное хеширование. Кроме того, она может быть включена по умолчанию в следующих релизах.

Тип: bool, по умолчанию: false.

Memcached::OPT_LIBKETAMA_HASH
Указывает алгоритм хеширования для сопоставления хостов.

Тип: int.

Memcached::OPT_TCP_KEEPALIVE
Включает функцию поддержания активности TCP.

Тип: bool, по умолчанию: false.

Memcached::OPT_BUFFER_WRITES
Включает или отключает буферизованный ввод/вывод. Включение буферизации приводит к буферизации команд хранилищу вместо моментальной отправки. Любое действие по извлечению данных приведёт к немедленной отправке буфера на удалённый сервер. Выход или закрытие соединения также приводит к немедленной отправке буфера.

Тип: bool, по умолчанию: false.

Memcached::OPT_BINARY_PROTOCOL
Включает использование бинарного протокола. Учтите, что на уже открытом соединении включить данную опцию не получится.

Тип: bool, по умолчанию: false.

Memcached::OPT_NO_BLOCK
Включает или отключает асинхронный ввод/вывод. Это самый быстрый транспорт для функций хранения.

Тип: bool, по умолчанию: false.

Memcached::OPT_NOREPLY
Включает или отключает игнорирование результата функций хранения (set, add, replace, append, prepend, delete, increment, decrement и т.д.). Функции хранения будут отправлены, не тратя время на ожидание ответа (ответа не будет). Этот параметр не влияет на команды извлечения, такие как Memcached::get().

Тип: bool, по умолчанию: false.

Memcached::OPT_TCP_NODELAY
Включает или отключает опцию no-delay для сокетов соединения (в некоторых случаях может дать прирост скорости).

Тип: bool, по умолчанию: false.

Memcached::OPT_SOCKET_SEND_SIZE
Максимальный размер буфера отправки для сокета в байтах.

Тип: int, по умолчанию: зависит от настроек платформы/ядра.

Memcached::OPT_SOCKET_RECV_SIZE
Максимальный размер буфера приёма для сокета в байтах.

Тип: int, по умолчанию: зависит от настроек платформы/ядра.

Memcached::OPT_CONNECT_TIMEOUT
В неблокирующем режиме задаёт время ожидания соединения для сокета в миллисекундах.

Тип: int, по умолчанию: 1000.

Memcached::OPT_RETRY_TIMEOUT
Время в секундах, в течение которого следует ждать перед повторной попыткой установления соединения.

Тип: int, по умолчанию: 2.

Memcached::OPT_DEAD_TIMEOUT
Время в секундах, в течение которого следует ждать перед повторной попыткой подключения к неработающим серверам. 0 означает, что повторная попытка не будет выполняться.

Тип: int, по умолчанию: 0.

Memcached::OPT_SEND_TIMEOUT
Время ожидания отправки для сокета в микросекундах. В случаях, когда вы не можете использовать неблокирующий ввод/вывод это поможет вам сохранить время ожидания при отсылке данных.

Тип: int, по умолчанию: 0.

Memcached::OPT_RECV_TIMEOUT
Время ожидания чтения для сокета в микросекундах. В случаях, когда вы не можете использовать неблокирующий ввод/вывод это поможет вам сохранить время ожидания при чтении данных.

Тип: int, по умолчанию: 0.

Memcached::OPT_POLL_TIMEOUT
Время ожидания опроса соединения, в миллисекундах.

Тип: int, по умолчанию: 1000.

Memcached::OPT_CACHE_LOOKUPS
Включает или отключает кеширование DNS-запросов.

Тип: bool, по умолчанию: false.

Memcached::OPT_SERVER_FAILURE_LIMIT
Указывает предел неудачных попыток подключения к серверу. Сервер будет удалён после такого количества непрерывных неудачных попыток подключения.

Тип: int, по умолчанию: 5.

Memcached::OPT_SERVER_TIMEOUT_LIMIT
Указывает предельное время ожидания попыток подключения к серверу. Сервер будет удалён после стольких последовательных таймаутов подключения.

Тип: int, по умолчанию: 0.

Memcached::OPT_AUTO_EJECT_HOSTS

Удаляет отключённые серверы из списка. Используется вместе с Memcached::OPT_SERVER_FAILURE_LIMIT и Memcached::OPT_SERVER_TIMEOUT_LIMIT.

Замечание:

Опция заменена на Memcached::OPT_REMOVE_FAILED_SERVERS.

Тип: bool, по умолчанию: false.

Memcached::OPT_VERIFY_KEY
Включает проверку ключей memcached.

Тип: bool, по умолчанию: false.

Memcached::OPT_USE_UDP
Использует UDP вместо TCP.

Тип: bool, по умолчанию: false.

Memcached::OPT_NUMBER_OF_REPLICAS
Количество реплик каждого элемента, хранящихся на разных серверах.

Тип: int, по умолчанию: 0.

Memcached::OPT_RANDOMIZE_REPLICA_READS
Рандомизирует сервер чтения реплик.

Тип: bool, по умолчанию: false.

Memcached::OPT_REMOVE_FAILED_SERVERS
Удаляет отключённые серверы из списка. Используется вместе с Memcached::OPT_SERVER_FAILURE_LIMIT и Memcached::OPT_SERVER_TIMEOUT_LIMIT.

Тип: bool, по умолчанию: false.

Memcached::HAVE_IGBINARY
Указывает, доступна ли поддержка сериализатора igbinary.

Тип: bool.

Memcached::HAVE_JSON
Указывает, доступна ли поддержка сериализатора JSON.

Тип: bool.

Memcached::HAVE_MSGPACK
Указывает, доступна ли поддержка сериализатора MessagePack.

Тип: bool.

Доступно с Memcached 3.0.0.

Memcached::HAVE_ZSTD
Indicates whether ZSTD compression support is available.

Type: bool.

Доступно с Memcached 3.3.0.

Memcached::HAVE_ENCODING
Указывает, поддерживается ли шифрование данных с помощью Memcached::setEncodingKey().

Тип: bool.

Доступно с Memcached 3.1.0.

Memcached::HAVE_SESSION

Тип: bool.

Доступно с Memcached 3.0.0.

Memcached::HAVE_SASL

Тип: bool.

Доступно с Memcached 3.0.0.

Memcached::GET_EXTENDED

Флаг для Memcached::get(), Memcached::getMulti() и Memcached::getMultiByKey() дл того, чтобы также возвращались значения токена CAS.

Доступно с Memcached 3.0.0.

Memcached::GET_PRESERVE_ORDER

Флаг для Memcached::getMulti() и Memcached::getMultiByKey() для гарантированного возвращения ключей в том же порядке, как они были запрошены. Несуществующие ключи будут возвращены со значениями null.

Memcached::RES_SUCCESS

Операция прошла успешно.

Memcached::RES_FAILURE

Операция завершилась ошибкой.

Memcached::RES_HOST_LOOKUP_FAILURE

Ошибка запроса к DNS.

Memcached::RES_UNKNOWN_READ_FAILURE

Не удалось прочитать сетевые данные.

Memcached::RES_PROTOCOL_ERROR

Некорректная команда в протоколе memcached.

Memcached::RES_CLIENT_ERROR

Ошибка на стороне клиента.

Memcached::RES_SERVER_ERROR

Ошибка на стороне сервера.

Memcached::RES_WRITE_FAILURE

Не удалось записать сетевые данные.

Memcached::RES_DATA_EXISTS

Не удалось сравнить-и-обменять: вы пытаетесь изменить элемент, который был изменён после того, как вы его прочитали в последний раз.

Memcached::RES_NOTSTORED

Элемент не сохранён: но не из-за ошибки. Обычно такое означает, что не соблюдены предусловия команд "add" или "replace" либо что элемент находится в очереди на удаление.

Memcached::RES_NOTFOUND

Элемент с заданным ключом не найден (при операциях "get" или "cas").

Memcached::RES_PARTIAL_READ

Частичная ошибка чтения сетевых данных.

Memcached::RES_SOME_ERRORS

Какие-то ошибки возникли при мульти-запросе.

Memcached::RES_NO_SERVERS

Список серверов пуст.

Memcached::RES_END

Конец результирующего набора.

Memcached::RES_ERRNO

Системная ошибка.

Memcached::RES_BUFFERED

Операция помещена в буфер.

Memcached::RES_TIMEOUT

Превышено время ожидания операции.

Memcached::RES_BAD_KEY_PROVIDED

Некорректный ключ.

Memcached::RES_STORED
Элемент сохранён.
Memcached::RES_DELETED
Элемент удалён.
Memcached::RES_STAT
Статистика.
Memcached::RES_ITEM
Элемент.
Memcached::RES_NOT_SUPPORTED
Не поддерживается.
Memcached::RES_FETCH_NOTFINISHED
Загрузка не завершена.
Memcached::RES_SERVER_MARKED_DEAD
Сервер помечен как неработающий.
Memcached::RES_UNKNOWN_STAT_KEY
Неизвестный ключ статистики.
Memcached::RES_INVALID_HOST_PROTOCOL
Недопустимый протокол хоста.
Memcached::RES_MEMORY_ALLOCATION_FAILURE
Ошибка выделения памяти.
Memcached::RES_CONNECTION_SOCKET_CREATE_FAILURE

Не удалось создать сетевой сокет.

Memcached::RES_PAYLOAD_FAILURE

Проблемы с данными: не удаётся сжать/разжать или сериализовать/десериализовать значение.

Memcached::RES_AUTH_PROBLEM

Доступно с Memcached 3.0.0.

Memcached::RES_AUTH_FAILURE

Доступно с Memcached 3.0.0.

Memcached::RES_AUTH_CONTINUE

Доступно с Memcached 3.0.0.

Memcached::RES_E2BIG

Доступно с Memcached 3.0.0.

Memcached::RES_KEY_TOO_BIG

Доступно с Memcached 3.0.0.

Memcached::RES_SERVER_TEMPORARILY_DISABLED

Доступно с Memcached 3.0.0.

Memcached::RES_SERVER_MEMORY_ALLOCATION_FAILURE

Доступно с Memcached 3.0.0.

Добавить

Примечания пользователей 5 notes

up
6
igorsantos07 no gmail
10 years ago
As per a StackOverflow answer (http://stackoverflow.com/a/9042985/102960, by @rid), this is the current list of Memcached Response constants:

00 = MEMCACHED_SUCCESS
01 = MEMCACHED_FAILURE
02 = MEMCACHED_HOST_LOOKUP_FAILURE // getaddrinfo() and getnameinfo() only
03 = MEMCACHED_CONNECTION_FAILURE
04 = MEMCACHED_CONNECTION_BIND_FAILURE // DEPRECATED see MEMCACHED_HOST_LOOKUP_FAILURE
05 = MEMCACHED_WRITE_FAILURE
06 = MEMCACHED_READ_FAILURE
07 = MEMCACHED_UNKNOWN_READ_FAILURE
08 = MEMCACHED_PROTOCOL_ERROR
09 = MEMCACHED_CLIENT_ERROR
10 = MEMCACHED_SERVER_ERROR // Server returns "SERVER_ERROR"
11 = MEMCACHED_ERROR // Server returns "ERROR"
12 = MEMCACHED_DATA_EXISTS
13 = MEMCACHED_DATA_DOES_NOT_EXIST
14 = MEMCACHED_NOTSTORED
15 = MEMCACHED_STORED
16 = MEMCACHED_NOTFOUND
17 = MEMCACHED_MEMORY_ALLOCATION_FAILURE
18 = MEMCACHED_PARTIAL_READ
19 = MEMCACHED_SOME_ERRORS
20 = MEMCACHED_NO_SERVERS
21 = MEMCACHED_END
22 = MEMCACHED_DELETED
23 = MEMCACHED_VALUE
24 = MEMCACHED_STAT
25 = MEMCACHED_ITEM
26 = MEMCACHED_ERRNO
27 = MEMCACHED_FAIL_UNIX_SOCKET // DEPRECATED
28 = MEMCACHED_NOT_SUPPORTED
29 = MEMCACHED_NO_KEY_PROVIDED /* Deprecated. Use MEMCACHED_BAD_KEY_PROVIDED! */
30 = MEMCACHED_FETCH_NOTFINISHED
31 = MEMCACHED_TIMEOUT
32 = MEMCACHED_BUFFERED
33 = MEMCACHED_BAD_KEY_PROVIDED
34 = MEMCACHED_INVALID_HOST_PROTOCOL
35 = MEMCACHED_SERVER_MARKED_DEAD
36 = MEMCACHED_UNKNOWN_STAT_KEY
37 = MEMCACHED_E2BIG
38 = MEMCACHED_INVALID_ARGUMENTS
39 = MEMCACHED_KEY_TOO_BIG
40 = MEMCACHED_AUTH_PROBLEM
41 = MEMCACHED_AUTH_FAILURE
42 = MEMCACHED_AUTH_CONTINUE
43 = MEMCACHED_PARSE_ERROR
44 = MEMCACHED_PARSE_USER_ERROR
45 = MEMCACHED_DEPRECATED
46 = MEMCACHED_IN_PROGRESS
47 = MEMCACHED_SERVER_TEMPORARILY_DISABLED
48 = MEMCACHED_SERVER_MEMORY_ALLOCATION_FAILURE
49 = MEMCACHED_MAXIMUM_RETURN /* Always add new error code before */
11 = MEMCACHED_CONNECTION_SOCKET_CREATE_FAILURE = MEMCACHED_ERROR
up
9
tyliu2 at gmail dot com
16 years ago
RES_SUCCESS = 0
RES_FAILURE = 1
RES_HOST_LOOKUP_FAILURE = 2
RES_UNKNOWN_READ_FAILURE = 7
RES_PROTOCOL_ERROR = 8
RES_CLIENT_ERROR = 9
RES_SERVER_ERROR = 10
RES_WRITE_FAILURE = 5
RES_DATA_EXISTS = 12
RES_NOTSTORED = 14
RES_NOTFOUND = 16
RES_PARTIAL_READ = 18
RES_SOME_ERRORS = 19
RES_NO_SERVERS = 20
RES_END = 21
RES_ERRNO = 26
RES_BUFFERED = 32
RES_TIMEOUT = 31
RES_BAD_KEY_PROVIDED = 33
RES_CONNECTION_SOCKET_CREATE_FAILURE = 11
RES_PAYLOAD_FAILURE = -1001
up
1
Allen Tsai
14 years ago
Memcached::OPT_SERVER_FAILURE_LIMIT - once a server has hit this limit, the client's getResultMessage() will return "SERVER IS MARKED DEAD."  Further gets() for keys hashing to this server will continue returning this message, as will sets() hashing to the dead server.

Version 2.0.01b supports a constant Memcached::OPT_AUTO_EJECT_HOSTS which allows automatic rebalancing of the cluster/automatic failover handling.
up
2
akenney at onesite dot com
15 years ago
Apparently there is a bug in libmemcached where connect timeout does not work when OPT_NO_BLOCK is set as well.

The bug and related blocking bugs are discussed here:
https://bugs.launchpad.net/libmemcached/+bug/583031

We confirmed this in libmemcached version 0.43 

Be sure to test some memcache servers in your pool being unavailable (no route to host and memcache service down) to ensure that timeout settings are working correctly.
up
0
Anonymous
8 years ago
Note that with Memcached::OPT_BINARY_PROTOCOL enabled there is some (possibly significant) size overhead added at the TCP level.

If you have a high volume of small values being get/set, you should analyze the effect of this option on your overall traffic size with a network tool (e.g. tcpdump) before enabling it, especially if you pay for traffic in/out of your memcache instance.
To Top