类 MemcachedEngine
用于缓存的 Memcached 存储引擎。 Memcached 在您对未来很长时间的过期时间的控制程度上有一些限制。 有关更多信息,请参阅 MemcachedEngine::write()。
Memcached 引擎支持二进制协议和 igbinary 序列化(如果 memcached 扩展是使用 --enable-igbinary 编译的)。 压缩的键也可以进行递增/递减。
属性摘要
-
$_Memcached protected
Memcached
memcached 包装器。
-
$_compiledGroupNames protected
list<string>
-
$_config protected
array<string, mixed>
运行时配置
-
$_configInitialized protected
bool
是否已使用默认值配置 config 属性
-
$_defaultConfig protected
array<string, mixed>
除非被运行时配置覆盖,否则使用的默认配置
-
$_groupPrefix protected
字符串
包含已编译的字符串,其中包含所有组前缀,这些前缀将附加到此缓存引擎中的每个键之前
-
$_serializers protected
array<string, int>
可用序列化引擎列表
方法摘要
-
_configDelete() protected
删除单个配置键。
-
_configRead() protected
读取配置键。
-
_configWrite() protected
写入配置键。
-
_key() protected
为缓存后端使用生成一个键。
-
_setOptions() protected
设置 memcached 实例
-
add() public
如果键不存在,则将其添加到缓存中。
-
clear() public
从缓存中删除所有键
-
clearGroup() public
增加组值以模拟删除组下所有键,旧值将保留在存储中,直到它们过期。
-
configShallow() public
将提供的配置与现有配置合并。 与
config()
递归合并嵌套键不同,此方法进行简单的合并。 -
decrement() public
减少整数缓存键的值
-
delete() public
从缓存中删除一个键
-
deleteMultiple() public
一次从缓存中删除多个键
-
duration() protected
将 TTL 值的各种表达式转换为以秒为单位的持续时间
-
ensureValidKey() protected
确保给定缓存键的有效性。
-
ensureValidType() protected
确保参数类型和缓存键的有效性。
-
get() public
从缓存中读取一个键
-
getConfig() public
返回配置。
-
getConfigOrFail() public
返回此特定键的配置。
-
getMultiple() public
一次读取缓存中的多个键
-
getOption() public
从 memcached 连接中读取选项值。
-
groups() public
返回每个配置组的
group value
如果未找到组初始值,则相应地初始化该组。 -
has() public
确定项目是否存在于缓存中。
-
increment() public
增加整数缓存键的值
-
init() public
初始化缓存引擎
-
parseServerString() public
将服务器地址解析为主机/端口。 处理 IPv6 和 IPv4 地址以及 Unix 套接字
-
set() public
将键的数据写入缓存。 当使用 memcached 作为您的缓存引擎时,请记住 Memcached pecl 扩展不支持未来超过 30 天的缓存过期时间。 任何超过 30 天的持续时间将被视为真实的 Unix 时间值,而不是相对于当前时间的偏移量。
-
setConfig() public
设置配置。
-
setMultiple() public
一次将多个缓存条目写入缓存
-
warning() protected
如果在操作期间遇到故障,并且将选项 warnOnWriteFailures 设置为 true,则缓存引擎可能会触发警告。
方法详情
_configDelete() ¶ protected
_configDelete(string $key): void
删除单个配置键。
参数
-
string
$key 要删除的键。
返回
void
抛出
Cake\Core\Exception\CakeException
如果试图覆盖现有配置
_configRead() ¶ protected
_configRead(string|null $key): mixed
读取配置键。
参数
-
string|null
$key 要读取的键。
返回
混合
_configWrite() ¶ protected
_configWrite(array<string, mixed>|string $key, mixed $value, string|bool $merge = false): void
写入配置键。
参数
-
array<string, mixed>|string
$key 要写入的键。
-
mixed
$value 要写入的值。
-
string|bool
$merge optional True 表示递归合并,'shallow' 表示简单合并,false 表示覆盖,默认为 false。
返回
void
抛出
Cake\Core\Exception\CakeException
如果试图覆盖现有配置
_key() ¶ protected
_key(string $key): string
为缓存后端使用生成一个键。
如果请求的键有效,则应用组前缀值和引擎前缀。 键中的空格将被替换。
参数
-
string
$key 传递的键
返回
字符串
抛出
Cake\Cache\Exception\InvalidArgumentException
如果键的值无效。
_setOptions() ¶ protected
_setOptions(): void
设置 memcached 实例
返回
void
抛出
Cake\Cache\Exception\InvalidArgumentException
当 Memcached 扩展没有使用所需的序列化引擎构建时。
add() ¶ public
add(string $key, mixed $value): bool
如果键不存在,则将其添加到缓存中。
默认为非原子实现。 子类应优先使用原子实现。
参数
-
string
$key 数据的标识符。
-
mixed
$value 要缓存的数据。
返回
bool
clearGroup() ¶ public
clearGroup(string $group): bool
增加组值以模拟删除组下所有键,旧值将保留在存储中,直到它们过期。
每个实现都需要决定是实际删除键,还是仅仅增加一个组生成值来达到相同的效果。
参数
-
string
$group 要清除的组的名称
返回
bool
configShallow() ¶ public
configShallow(array<string, mixed>|string $key, mixed|null $value = null): $this
将提供的配置与现有配置合并。 与config()
递归合并嵌套键不同,此方法进行简单的合并。
设置特定值
$this->configShallow('key', $value);
设置嵌套值
$this->configShallow('some.nested.key', $value);
同时更新多个配置设置
$this->configShallow(['one' => 'value', 'another' => 'value']);
参数
-
array<string, mixed>|string
$key 要设置的键,或完整配置数组。
-
mixed|null
$value 可选 要设置的值。
返回
$this
decrement() ¶ public
decrement(string $key, int $offset = 1): int|false
减少整数缓存键的值
参数
-
string
$key 数据的标识符
-
int
$offset 可选 要减去多少
返回
int|false
deleteMultiple() ¶ public
deleteMultiple(iterable<string> $keys): bool
一次从缓存中删除多个键
这是一个尽力尝试。如果删除项目会产生错误,则会忽略该错误,并将尝试删除所有项目。
参数
-
iterable<string>
$keys 数据的标识符数组
返回
bool
duration() ¶ protected
duration(DateInterval|int|null $ttl): int
将 TTL 值的各种表达式转换为以秒为单位的持续时间
参数
-
DateInterval|int|null
$ttl 此项目的 TTL 值。如果发送 null,则将使用驱动程序的默认持续时间。
返回
int
ensureValidKey() ¶ protected
ensureValidKey(mixed $key): void
确保给定缓存键的有效性。
参数
-
mixed
$key 要检查的键。
返回
void
抛出
Cake\Cache\Exception\InvalidArgumentException
当键无效时。
ensureValidType() ¶ protected
ensureValidType(iterable $iterable, string $check = self::CHECK_VALUE): void
确保参数类型和缓存键的有效性。
参数
-
iterable
$iterable 要检查的可迭代对象。
-
string
$check 可选 是否检查键或值。
返回
void
抛出
Cake\Cache\Exception\InvalidArgumentException
get() ¶ public
get(string $key, mixed $default = null): mixed
从缓存中读取一个键
参数
-
string
$key 数据的标识符
-
mixed
$default 可选 如果键不存在,要返回的默认值。
返回
混合
getConfig() ¶ public
getConfig(string|null $key = null, mixed $default = null): mixed
返回配置。
用法
读取整个配置
$this->getConfig();
读取特定值
$this->getConfig('key');
读取嵌套值
$this->getConfig('some.nested.key');
使用默认值读取
$this->getConfig('some-key', 'default-value');
参数
-
string|null
$key 可选 要获取的键,或获取整个配置的 null。
-
mixed
$default 可选 当键不存在时的返回值。
返回
混合
getConfigOrFail() ¶ public
getConfigOrFail(string $key): mixed
返回此特定键的配置。
此键的配置值必须存在,不能为 null。
参数
-
string
$key 要获取的键。
返回
混合
抛出
InvalidArgumentException
getMultiple() ¶ public
getMultiple(iterable<string> $keys, mixed $default = null): iterable<string, mixed>
一次读取缓存中的多个键
参数
-
iterable<string>
$keys 数据的标识符数组
-
mixed
$default 可选 要为不存在的键返回的默认值。
返回
iterable<string, mixed>
getOption() ¶ public
getOption(int $name): string|int|bool|null
从 memcached 连接中读取选项值。
参数
-
int
$name 要读取的选项名称。
返回
string|int|bool|null
另请参阅
has() ¶ public
has(string $key): bool
确定项目是否存在于缓存中。
注意:建议仅将 has() 用于缓存预热目的,不要在您的实时应用程序操作中使用 get/set,因为此方法容易出现竞争条件,在您的 has() 返回 true 之后,另一个脚本可以立即将其删除,使您的应用程序状态过时。
参数
-
string
$key 缓存项键。
返回
bool
抛出
Cake\Cache\Exception\InvalidArgumentException
如果 $key 字符串不是合法值。
increment() ¶ public
increment(string $key, int $offset = 1): int|false
增加整数缓存键的值
参数
-
string
$key 数据的标识符
-
int
$offset 可选 要递增多少
返回
int|false
init() ¶ public
init(array<string, mixed> $config = []): bool
初始化缓存引擎
由缓存前端自动调用
参数
-
array<string, mixed>
$config 可选 引擎的设置数组
返回
bool
抛出
Cake\Cache\Exception\InvalidArgumentException
当您尝试使用没有使用 SASL 支持编译的 Memcached 进行身份验证时
parseServerString() ¶ public
parseServerString(string $server): array
将服务器地址解析为主机/端口。 处理 IPv6 和 IPv4 地址以及 Unix 套接字
参数
-
string
$server 服务器地址字符串。
返回
array
set() ¶ public
set(string $key, mixed $value, DateInterval|int|null $ttl = null): bool
将键的数据写入缓存。 当使用 memcached 作为您的缓存引擎时,请记住 Memcached pecl 扩展不支持未来超过 30 天的缓存过期时间。 任何超过 30 天的持续时间将被视为真实的 Unix 时间值,而不是相对于当前时间的偏移量。
参数
-
string
$key 数据的标识符
-
mixed
$value 要缓存的数据
-
DateInterval|int|null
$ttl 可选 可选。此项目的 TTL 值。如果未发送任何值且驱动程序支持 TTL,则库可能会为其设置默认值或让驱动程序负责。
返回
bool
另请参阅
setConfig() ¶ public
setConfig(array<string, mixed>|string $key, mixed|null $value = null, bool $merge = true): $this
设置配置。
用法
设置特定值
$this->setConfig('key', $value);
设置嵌套值
$this->setConfig('some.nested.key', $value);
同时更新多个配置设置
$this->setConfig(['one' => 'value', 'another' => 'value']);
参数
-
array<string, mixed>|string
$key 要设置的键,或完整配置数组。
-
mixed|null
$value 可选 要设置的值。
-
bool
$merge 可选 是否递归合并或覆盖现有配置,默认值为 true。
返回
$this
抛出
Cake\Core\Exception\CakeException
当尝试设置无效的键时。
setMultiple() ¶ public
setMultiple(iterable $values, DateInterval|int|null $ttl = null): bool
一次将多个缓存条目写入缓存
参数
-
iterable
$values 要存储在缓存中的数据数组
-
DateInterval|int|null
$ttl 可选 可选。此项目的 TTL 值。如果未发送任何值且驱动程序支持 TTL,则库可能会为其设置默认值或让驱动程序负责。
返回
bool
warning() ¶ protected
warning(string $message): void
如果在操作期间遇到故障,并且将选项 warnOnWriteFailures 设置为 true,则缓存引擎可能会触发警告。
参数
-
string
$message 警告信息。
返回
void
属性详情
$_defaultConfig ¶ protected
除非被运行时配置覆盖,否则使用的默认配置
compress
是否压缩数据duration
指定此缓存配置中的项目持续多长时间。groups
与存储在此配置中的每个键关联的组或“标签”列表。方便从缓存中删除整个组。username
登录以访问 Memcache 服务器password
密码以访问 Memcache 服务器persistent
持久连接的名称。使用相同持久值的所有配置将共享一个底层连接。prefix
前缀添加到所有条目。当您需要与另一个缓存配置或另一个应用程序共享键空间时,这很有用。serialize
用于序列化数据的序列化引擎。可用的引擎是“php”、“igbinary”和“json”。除了“php”之外,memcached 扩展必须使用适当的序列化支持进行编译。servers
Memcached 服务器的字符串或数组。如果数组 MemcacheEngine 会将它们用作池。options
- Memcached 客户端的附加选项。应该是一个选项 => 值的数组。使用 \Memcached::OPT_* 常量作为键。
类型
array<string, mixed>
$_serializers ¶ protected
可用序列化引擎列表
Memcached 必须使用 JSON 和 igbinary 支持进行编译才能使用这些引擎
类型
array<string, int>