Memcached缓存适配器
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 5.0,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
Memcached缓存适配器
该适配器使用一个(或多个)将值存储在内存中Memcached服务器实例。不像APCu适配器,与复述,适配器,不局限于当前服务器的共享内存;您可以独立于PHP环境存储内容。还可以使用服务器集群来提供冗余和/或故障转移。
谨慎
要求:的Memcached PHP扩展同时Memcached服务器必须安装、激活并运行才能使用此适配器。版本2.2
或者更大的Memcached PHP扩展是此适配器所必需的。
该适配器需要一个Memcached作为第一个参数传递的实例。命名空间和默认缓存生存期可以作为第二个和第三个参数传递:
12 3 4 5 6 7 8 9 10 11 12 13 14
使用ob娱乐下载\组件\缓存\适配器\MemcachedAdapter;$缓存=新MemcachedAdapter (//设置选项并添加服务器实例的客户端对象\ Memcached$客户端,//一个字符串,前缀为存储在缓存中的项的键$名称空间=”,//未定义缓存项的默认生存期(秒)//自己的生命周期,值为0会导致项目无限期地存储(例如://直到MemcachedAdapter::clear()被调用或者服务器重新启动$defaultLifetime=0);
配置连接
的createConnection ()方法允许创建和配置Memcached类实例,使用数据源名称(DSN)或者一个dsn数组:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
使用ob娱乐下载\组件\缓存\适配器\MemcachedAdapter;//通过一个DSN字符串向客户端注册一个服务器$客户端= MemcachedAdapter::createConnection (memcached: / / localhost的// DSN可以包含配置选项(将它们作为查询字符串传递):/ /“memcached: / / localhost: 11222 ?retry_timeout = 10 '/ /“memcached: / / localhost: 11222 ?socket_recv_size=1&socket_send_size=2');//通过一个DSN字符串数组向客户端注册多个服务器$客户端= MemcachedAdapter::createConnection ([“memcached: / / 10.0.0.100”,“memcached: / / 10.0.0.101”,“memcached: / / 10.0.0.102”,/ /等等……]);//一个DSN可以使用以下语法定义多个服务器:// host[hostname-or-IP:port](其中port是可选的)。套接字必须包含尾随的':'$客户端= MemcachedAdapter::createConnection (memcached: ?主机(localhost)主机(localhost: 12345)主机[/一些/ memcached.sock:] = 3 ');
的数据源名称(DSN)对于此适配器必须使用以下格式:
1
memcached: / /[用户:pass@] [ip主机| |套接字[:端口]][?重量= int]
DSN必须包括一个IP/主机(和一个可选端口)或一个套接字路径,一个可选的用户名和密码(用于SASL认证;它要求使用memcached扩展进行编译——enable-memcached-sasl
)和可选权重(用于在集群中对服务器进行优先级排序;取值为之间的整数0
而且One hundred.
默认为零
;值越高,优先级越高)。
下面是有效dsn的常见示例,显示可用值的组合:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
使用ob娱乐下载\组件\缓存\适配器\MemcachedAdapter;$客户端= MemcachedAdapter::createConnection ([//主机名+端口“memcached: / / my.server.com: 11211”//主机名不带端口+ SASL用户名和密码“memcached: / /说明:abcdef@localhost”// IP地址而不是主机名+权重memcached: / / 127.0.0.1 ?重量= 50 '// socket代替主机名/IP + SASL用户名和密码memcached: / / janesmith: mypassword@ / var /运行/ memcached.sock”// socket代替hostname/IP + weightmemcached: / / / var /运行/ memcached.sock吗?重量= 20 ']);
配置选项
的createConnection ()Helper方法也接受一个选项数组作为它的第二个参数。的关联数组Key =>值
表示选项名称及其各自值的对:
12 3 4 5 6 7 8 9 10 11 12 13
使用ob娱乐下载\组件\缓存\适配器\MemcachedAdapter;$客户端= MemcachedAdapter::createConnection (//一个DSN字符串或一个DSN字符串数组[],//配置选项的关联数组[“压缩”=>真正的,“libketama_compatible”=>真正的,“序列化器”=>“igbinary”,]);
可用选项
-
auto_eject_hosts
(类型:保龄球
违约:假
) -
通过自动弹出超过配置的主机,启用或禁用恒定的自动集群重新平衡
server_failure_limit
. -
buffer_writes
(类型:保龄球
违约:假
) - 启用或禁用缓冲输入/输出操作,使存储命令缓冲,而不是立即发送到远程服务器。任何检索数据、退出连接或关闭连接的操作都将导致提交缓冲区。
-
压缩
(类型:保龄球
违约:真正的
) - 启用或禁用有效负载压缩,其中在存储期间压缩超过100字节的项值,在检索期间解压缩。
-
compression_type
(类型:字符串
) -
指定值有效载荷上使用的压缩方法。当压缩选项已启用。
有效的选项值包括
fastlz
而且zlib
,默认值为根据编译时使用的标志而异. -
connect_timeout
(类型:int
违约:1000
) -
属性时,套接字连接操作的超时(以毫秒为单位)
no_block
选项已启用。有效的选项值包括任意正整数.
-
分布
(类型:字符串
违约:一致的
) -
指定服务器之间的项密钥分配方法。一致的散列提供了更好的分布,并允许以最小的缓存损失将服务器添加到集群。
有效的选项值包括
modula
,一致的
,virtual_bucket
. -
哈希
(类型:字符串
违约:md5
) -
指定用于项键的哈希算法。每种哈希算法都有其优点和缺点。为了与其他客户端兼容,建议使用默认值。
有效的选项值包括
默认的
,md5
,儿童权利公约
,fnv1_64
,fnv1a_64
,fnv1_32
,fnv1a_32
,谢长廷
,杂音
. -
libketama_compatible
(类型:保龄球
违约:真正的
) -
启用或禁用“libketama”兼容行为,允许其他基于libketama的客户端透明地访问客户端实例存储的键(如Python和Ruby)。启用此选项将设置
哈希
选项md5
和分布
选项一致的
. -
no_block
(类型:保龄球
违约:真正的
) - 启用或禁用异步输入和输出操作。这是存储功能可用的最快的传输选项。
-
number_of_replicas
(类型:int
违约:0
) -
指定应为每个项(在不同服务器上)存储的副本数量。这并没有指定特定的memcached服务器来存储副本,而是将副本与所有其他对象一起存储(在注册的“n”下一个服务器上)。
有效的选项值包括任意正整数.
-
prefix_key
(类型:字符串
,默认为空字符串) -
指定键前的“域”(或“命名空间”)。它不能超过128个字符,并减少了最大密钥大小。
有效的选项值包括任何字母数字字符串.
-
poll_timeout
(类型:int
违约:1000
) -
指定套接字轮询操作超时前的时间(以秒为单位)。
有效的选项值包括任意正整数.
-
randomize_replica_read
(类型:保龄球
类型:假
) - 启用或禁用副本读取起始点的随机化。通常情况下,从主服务器读取,如果发生错误,则从“主服务器+1”读取,然后是“主服务器+2”,一直到“n”个副本。该选项将副本读取设置为在所有可用服务器之间随机化;它允许将读负载分配到多台服务器,但需要消耗更多的写流量。
-
recv_timeout
(类型:int
违约:0
) -
指定出接字(读)操作超时前的时间量(以微秒为单位)。当
no_block
选项未启用,这将允许您在读取数据时仍然有超时。有效的选项值包括
0
或任意正整数. -
retry_timeout
(类型:int
违约:0
) -
指定超时和重试连接尝试之前的时间量(以秒为单位)。
有效的选项值包括任意正整数.
-
send_timeout
(类型:int
违约:0
) -
指定传入套接字(发送)操作超时前的时间量(以微秒为单位)。当
no_block
选项未启用,这将允许您在发送数据时仍有超时。有效的选项值包括
0
或任意正整数. -
序列化器
(类型:字符串
违约:php
) -
指定用于序列化非标量值的序列化器。的
igbinary
options要求启用igbinary PHP扩展,并编译支持它的memcached扩展。有效的选项值包括
php
而且igbinary
. -
server_failure_limit
(类型:int
违约:0
) -
在将服务器标记为“死”之前,指定服务器连接尝试的失败限制。服务器将保留在服务器池中,除非
auto_eject_hosts
启用。有效的选项值包括任意正整数.
-
socket_recv_size
(类型:int
) -
指定传入(接收)套接字连接数据上下文中的最大缓冲区大小(以字节为单位)。
有效的选项值包括任意正整数,默认值为因平台和内核配置而异.
-
socket_send_size
(类型:int
) -
指定出(发送)套接字连接数据上下文中的最大缓冲区大小(以字节为单位)。
有效的选项值包括任意正整数,默认值为因平台和内核配置而异.
-
tcp_keepalive
(类型:保龄球
违约:假
) - 启用或禁用“keep-alive _”传输控制协议(TCP)特性,该特性帮助确定另一端是否已经停止响应,方法是在空闲时间后向网络对等体发送探测,并根据响应(或缺乏响应)关闭或持久化套接字。
-
tcp_nodelay
(类型:保龄球
违约:假
) - 启用或禁用“' no-delay ' _”(Nagle算法)传输控制协议(TCP)算法,这是一种机制,旨在通过结合许多小的传出消息并一次性发送它们来减少TCP报头的开销,从而提高网络的效率。
-
use_udp
(类型:保龄球
违约:假
) -
的使用用户数据报协议模式(而不是传输控制协议(TCP)Mode),其中所有操作都以“fire-and-forget”方式执行;一旦客户端执行了该操作,将不会尝试确保该操作已被接收或被执行。
谨慎
并非所有库操作都在此模式下进行测试。不允许混合使用TCP和UDP服务器。
-
verify_key
(类型:保龄球
违约:假
) - 启用或禁用对所使用的所有密钥进行测试和验证,以确保它们有效并符合所使用的协议设计。