PHP 日本會議 2024

Memcached

新增註解

使用者貢獻的註解 4 則註解

171
joelhy
13 年前
對於那些對 memcached 擴充功能和 memcache 擴充功能感到困惑的人,簡短的說明是它們都是 memcached 伺服器的客戶端,而 memcached 擴充功能提供比 memcache 擴充功能更多的功能。
21
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
"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'));
}
}
4
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 伺服器的多個實例。
1
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