Следующие константы определяются модулем и доступны, только если модуль либо собрали в PHP, либо динамически загрузили при выполнении кода.
Memcached::OPT_COMPRESSION Memcached::OPT_COMPRESSION_TYPE Memcached::COMPRESSION_FASTLZ ,
Memcached::COMPRESSION_ZLIB и
Memcached::COMPRESSION_ZSTD .
Тип: int , по умолчанию: Memcached::COMPRESSION_FASTLZ .
Memcached::COMPRESSION_FASTLZ Memcached::COMPRESSION_ZLIB Memcached::COMPRESSION_ZSTD Memcached::OPT_COMPRESSION_LEVEL Memcached::COMPRESSION_FASTLZ не поддерживает уровни сжатия.Memcached::COMPRESSION_ZSTD : минимальный уровень -22, а максимальный уровень – 22.Memcached::COMPRESSION_ZLIB : минимальный уровень 0, а максимальный уровень – 9.Тип: 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 Memcached::SERIALIZER_JSON Сериализатор JSON. Сериализатор десериализует JSON в объект.
Memcached::SERIALIZER_JSON_ARRAY Memcached::SERIALIZER_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 Memcached::OPT_LIBKETAMA_COMPATIBLE Включает или отключает совместимость с поведением типа libketama. Если включено, то алгоритм хеширования ключей устанавливается в MD5 и распределение ключей в режим консистентного хеширования на базе весов. Это полезно потому, что другие клиенты с поведением типа libketama (Python, Ruby и т.д.) с такими же настройками сервера смогут получить прозрачный доступ к ключам.
Замечание:
Крайне рекомендуется включить эту опцию если вы хотите использовать консистентное хеширование. Кроме того, она может быть включена по умолчанию в следующих релизах.
Memcached::OPT_LIBKETAMA_HASH Тип: int .
Memcached::OPT_TCP_KEEPALIVE Memcached::OPT_BUFFER_WRITES Memcached::OPT_BINARY_PROTOCOL Memcached::OPT_NO_BLOCK Memcached::OPT_NOREPLY Memcached::OPT_TCP_NODELAY 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 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.
Memcached::OPT_VERIFY_KEY Memcached::OPT_USE_UDP Memcached::OPT_NUMBER_OF_REPLICAS Тип: int , по умолчанию: 0.
Memcached::OPT_RANDOMIZE_REPLICA_READS Memcached::OPT_REMOVE_FAILED_SERVERS Memcached::OPT_SERVER_FAILURE_LIMIT и
Memcached::OPT_SERVER_TIMEOUT_LIMIT .
Memcached::HAVE_IGBINARY Тип: bool .
Memcached::HAVE_JSON Тип: bool .
Memcached::HAVE_MSGPACK Тип: bool .
Доступно с Memcached 3.0.0.
Memcached::HAVE_ZSTD Type: bool .
Доступно с Memcached 3.3.0.
Memcached::HAVE_ENCODING Тип: 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.
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_ERRORRES_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 = -1001Memcached::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.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.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.