PHP Conference Japan 2024

Memcached

添加注释

用户贡献注释 4 条注释

joelhy
13 年前
对于那些对 memcached 扩展和 memcache 扩展感到困惑的人,简而言之,它们都是 memcached 服务器的客户端,而 memcached 扩展提供了比 memcache 扩展更多的功能。
gabriel dot maybrun at demandmedia dot com
10 年前
注意:最近我被分配的任务是从 PECL memcache 迁移到 PECL memcached,并遇到了一个主要问题——memcache 和 memcached 以不同的方式序列化数据,这意味着使用一个库写入的数据不一定能被另一个库读取。

例如,如果您使用 memcache 写入对象或数组,则 memcached 会将其解释为整数。如果您使用 memcached 写入它,则 memcache 会将其解释为字符串。

简而言之 - 您不能在 memcache 和 memcached 之间安全地切换,除非进行缓存刷新或隔离的缓存环境。



<?php
$memcache
= new Memcache;
$memcacheD = new Memcached;
$memcache->addServer($host);
$memcacheD->addServers($servers);

$checks = array(
123,
4542.32,
'a string',
true,
array(
123, 'string'),
(object)array(
'key1' => 'value1'),
);
foreach (
$checks as $i => $value) {
print
"正在使用 Memcache 进行写入检查\n";
$key = 'cachetest' . $i;
$memcache->set($key, $value);
usleep(100);
$val = $memcache->get($key);
$valD = $memcacheD->get($key);
if (
$val !== $valD) {
print
"不兼容!";
var_dump(compact('val', 'valD'));
}

print
"正在使用 MemcacheD 进行写入检查\n";
$key = 'cachetest' . $i;
$memcacheD->set($key, $value);
usleep(100);
$val = $memcache->get($key);
$valD = $memcacheD->get($key);
if (
$val !== $valD) {
print
"不兼容!";
var_dump(compact('val', 'valD'));
}
}
Moradnejad
3年前
## 在 Ubuntu 上安装 Memcached

要在 Ubuntu 上安装 Memcached,请转到终端并输入以下命令:

$sudo apt-get update
$sudo apt-get install memcached

## 确认 Memcached 安装

要确认 Memcached 是否已安装,您需要运行以下命令。此命令显示 Memcached 正在默认端口 11211 上运行。

$ps aux | grep memcached

要在其他端口上运行 Memcached 服务器,请执行以下命令。此命令在 TCP 端口 11111 上启动服务器,并在 UDP 端口 11111 上作为守护进程侦听。

$memcached -p 11111 -U 11111 -u user -d

您可以通过单个安装运行多个 Memcached 服务器实例。
davidt
11年前
该模块还支持 SASL 身份验证,但遗憾的是没有文档记录。您需要运行以下代码

<?php
$m
= new Memcached();
$m->setOption(Memcached::OPT_BINARY_PROTOCOL, true);
$m->setSaslAuthData("user-1", "pass");
?>

您需要在 php.ini 文件中为 memcached 启用“memcached.use_sasl = 1” ini 选项。
To Top