Memcached

添加笔记

用户贡献笔记 4 个笔记

joelhy
13 年前
对于那些对 memcached 扩展和 memcache 扩展感到困惑的人,简而言之,它们都是 memcached 服务器的客户端,而 memcached 扩展提供了比 memcache 扩展更多的功能。
gabriel dot maybrun at demandmedia dot com
9 年前
陷阱:最近我被要求从 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
"Checking WRITE with Memcache\n";
$key = 'cachetest' . $i;
$memcache->set($key, $value);
usleep(100);
$val = $memcache->get($key);
$valD = $memcacheD->get($key);
if (
$val !== $valD) {
print
"Not compatible!";
var_dump(compact('val', 'valD'));
}

print
"Checking WRITE with MemcacheD\n";
$key = 'cachetest' . $i;
$memcacheD->set($key, $value);
usleep(100);
$val = $memcache->get($key);
$valD = $memcacheD->get($key);
if (
$val !== $valD) {
print
"Not compatible!";
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