预定义常量

以下常量由此扩展定义,只有在扩展已编译到 PHP 中或在运行时动态加载时才可用。

Memcached::OPT_COMPRESSION

启用或禁用有效负载压缩。启用后,超过一定阈值(目前为 100 字节)的项目值将在存储时被压缩,并在检索时透明地解压缩。

类型:bool,默认值:true

Memcached::OPT_SERIALIZER

指定用于序列化非标量值的序列化器。有效的序列化器是 Memcached::SERIALIZER_PHPMemcached::SERIALIZER_IGBINARY。后者仅在 memcached 使用 --enable-memcached-igbinary 选项配置且加载了 igbinary 扩展时才受支持。

类型:int,默认值:Memcached::SERIALIZER_PHP

Memcached::SERIALIZER_PHP

默认 PHP 序列化器。

Memcached::SERIALIZER_IGBINARY

使用 » igbinary 序列化器。它以紧凑的二进制形式存储 PHP 数据结构,而不是文本表示,从而节省了空间和时间。

Memcached::SERIALIZER_JSON

JSON 序列化器。

Memcached::OPT_PREFIX_KEY

这可以用来为你的项目键创建一个“域”。这里指定的值将作为每个键的前缀。它不能超过 128 个字符,并将减少可用的最大键大小。前缀仅应用于项目键,不应用于服务器键。

类型:string,默认值:""

Memcached::OPT_HASH

指定用于项目键的哈希算法。有效的值通过 Memcached::HASH_* 常量提供。每种哈希算法都有其优缺点。如果你不知道或不在乎,请使用默认值。

类型:int,默认值:Memcached::HASH_DEFAULT

Memcached::HASH_DEFAULT

默认(Jenkins 一次一个)项目键哈希算法。

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

启用或禁用缓冲 I/O。启用缓冲 I/O 会导致存储命令“缓冲”,而不是发送。任何检索数据的操作都会导致此缓冲区被发送到远程连接。退出连接或关闭连接也会导致缓冲数据被推送到远程连接。

类型:bool,默认值:false

Memcached::OPT_BINARY_PROTOCOL

启用使用二进制协议。请注意,你不能在打开的连接上切换此选项。

类型:bool,默认值:false

Memcached::OPT_NO_BLOCK

启用或禁用异步 I/O。这是存储函数可用的最快传输方式。

类型:bool,默认值:false

Memcached::OPT_NOREPLY

启用或禁用忽略存储命令的结果(set、add、replace、append、prepend、delete、increment、decrement 等)。存储命令将被发送,而无需花费时间等待回复(不会有回复)。检索命令(如 Memcached::get())不受此设置的影响。

类型:bool,默认值:false

Memcached::OPT_TCP_NODELAY

启用或禁用连接套接字的无延迟功能(在某些环境中可能更快)。

类型: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

套接字发送超时(以微秒为单位)。如果你无法使用非阻塞 I/O,这将允许你仍然对数据发送进行超时。

类型:int,默认值:0

Memcached::OPT_RECV_TIMEOUT

套接字读取超时(以微秒为单位)。如果你无法使用非阻塞 I/O,这将允许你仍然对数据读取进行超时。

类型: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 序列化器支持是否可用。

类型:bool.

从 Memcached 3.0.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_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 笔记

tyliu2 at gmail dot com
14 年前
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
igorsantos07 no gmail
8 年前
根据 StackOverflow 答案(http://stackoverflow.com/a/9042985/102960, 由 @rid 提供),这是 Memcached 响应常量的当前列表

00 = MEMCACHED_SUCCESS
01 = MEMCACHED_FAILURE
02 = MEMCACHED_HOST_LOOKUP_FAILURE // 仅限 getaddrinfo() 和 getnameinfo()
03 = MEMCACHED_CONNECTION_FAILURE
04 = MEMCACHED_CONNECTION_BIND_FAILURE // 已弃用,请参阅 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_ERROR”
11 = MEMCACHED_ERROR // 服务器返回“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 // 已弃用
28 = MEMCACHED_NOT_SUPPORTED
29 = MEMCACHED_NO_KEY_PROVIDED /* 已弃用。请使用 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 /* 始终在添加新的错误代码之前添加 */
11 = MEMCACHED_CONNECTION_SOCKET_CREATE_FAILURE = MEMCACHED_ERROR
匿名
7 年前
请注意,启用 Memcached::OPT_BINARY_PROTOCOL 后,在 TCP 级别会增加一些(可能很显著)的大小开销。

如果您有大量的小值正在进行 get/set 操作,您应该使用网络工具(例如 tcpdump)分析此选项对您的整体流量大小的影响,然后再启用它,尤其是在您为 memcache 实例的进出流量付费的情况下。
akenney at onesite dot com
13 年前
显然,libmemcached 中存在一个错误,导致在设置 OPT_NO_BLOCK 时连接超时不起作用。

错误和相关的阻塞错误在以下位置进行了讨论
https://bugs.launchpad.net/libmemcached/+bug/583031

我们已在 libmemcached 版本 0.43 中确认了这一点。

请务必测试池中一些不可用的 memcache 服务器(无路由到主机和 memcache 服务已关闭),以确保超时设置正常工作。
Allen Tsai
13 年前
Memcached::OPT_SERVER_FAILURE_LIMIT - 一旦服务器达到此限制,客户端的 getResultMessage() 将返回“SERVER IS MARKED DEAD”。针对此服务器进行散列的进一步 get() 操作将继续返回此消息,针对已死服务器进行散列的 set() 操作也将返回此消息。

版本 2.0.01b 支持常量 Memcached::OPT_AUTO_EJECT_HOSTS,它允许自动重新平衡集群/自动故障转移处理。
To Top