2024年PHP日本大会

预定义常量

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

Memcached::OPT_COMPRESSION
启用或禁用有效负载压缩。启用后,长度超过一定阈值(目前为2000字节)的项目值将在存储期间被压缩,并在检索期间被透明地解压缩。可以使用memcached.compression_threshold ini设置配置阈值。

类型:bool,默认值:true

Memcached::OPT_COMPRESSION_TYPE
如果启用了压缩,则指定要使用的压缩算法。有效的算法是Memcached::COMPRESSION_FASTLZMemcached::COMPRESSION_ZLIBMemcached::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_PHPMemcached::SERIALIZER_IGBINARYMemcached::SERIALIZER_JSONMemcached::SERIALIZER_JSON_ARRAYMemcached::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一次一个)项目键哈希算法。

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
虚拟桶哈希键分发算法(也称为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
启用或禁用缓冲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,默认值:2

Memcached::OPT_DEAD_TIMEOUT
等待重试失效服务器的时间量(秒)。0 表示不重试。

类型: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,默认值:5

Memcached::OPT_SERVER_TIMEOUT_LIMIT
指定服务器连接尝试的超时限制。在此次连续连接超时后,服务器将被移除。

类型:int,默认值:0

Memcached::OPT_AUTO_EJECT_HOSTS

从列表中移除失效的服务器。与Memcached::OPT_SERVER_FAILURE_LIMITMemcached::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_LIMITMemcached::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
指示 ZSTD 压缩支持是否可用。

类型: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 条注释

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 层添加一些(可能很大)的大小开销。

如果您有大量的小值被获取/设置,您应该在启用此选项之前使用网络工具(例如 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()将返回“服务器已标记为失效”。针对此服务器的后续gets()操作(键散列到此服务器)将继续返回此消息,针对失效服务器的sets()操作也是如此。

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