CakeFest 2024: The Official CakePHP Conference

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

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

Memcached::OPT_COMPRESSION

Разрешает или запрещает сжатие данных. Если разрешено, то записи длиннее определённого порога (обычно 100 байт) будут прозрачно сжиматься при сохранении и разжиматься при извлечении.

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

Memcached::OPT_SERIALIZER

Задаёт сериализатор для сериализации не скалярных значений. Корректными значениями являются Memcached::SERIALIZER_PHP и Memcached::SERIALIZER_IGBINARY. Последний допустим, только если memcached собран с опцией --enable-memcached-igbinary и загружен модуль igbinary.

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

Memcached::SERIALIZER_PHP

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

Memcached::SERIALIZER_IGBINARY

Сериализатор » igbinary. Вместо текстового представления он сохраняет данные в компактном бинарном формате, что даёт выигрыш в размере и скорости работы.

Memcached::SERIALIZER_JSON

Сериализатор JSON.

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::OPT_LIBKETAMA_COMPATIBLE

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

Замечание:

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

Тип: 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, по умолчанию: 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, по умолчанию: 0.

Memcached::HAVE_IGBINARY

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

Тип: bool.

Memcached::HAVE_JSON

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

Тип: bool.

Memcached::HAVE_MSGPACK

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

Type: bool.

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

Memcached::HAVE_SESSION

Type: bool.

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

Memcached::HAVE_SASL

Type: 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_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.

add a note

User Contributed Notes 5 notes

up
10
tyliu2 at gmail dot com
14 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
5
igorsantos07 no gmail
8 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
1
Anonymous
7 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.
up
1
akenney at onesite dot com
13 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
Allen Tsai
12 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.
To Top