2026年9月1日
2026年9月1日
Memcachedのインストールと基本設定方法(Ubuntu・RHEL系、PHPとWordPressでの使い方)
Memcached は、データをメモリ上にキーと値の組で保存するキャッシュサーバーです。データベースの問い合わせ結果などを一時的に置いておき、同じデータを何度も作り直さずに済ませるために使います。保存先はメモリだけなので、再起動すると中身は消えます。消えて困るデータの保存には使いません。
この記事では、Ubuntu と RHEL 系(AlmaLinux など)でのインストールと基本設定、動作確認、PHP と WordPress から使うときの注意を説明します(2026年11月時点。Ubuntu 24.04 の memcached 1.6.24、AlmaLinux 9 の memcached 1.6.9 で確認しています)。
手順1:インストールして起動する
Ubuntu / Debian
sudo apt update
# memcached 本体と、確認用のコマンド群(memcstat など)
sudo apt install -y memcached libmemcached-tools
sudo systemctl enable --now memcached
systemctl status memcached
libmemcached-dev は、PHP 拡張などを自分でビルドするときに使う開発用ファイルです。サーバーを動かすだけなら要りません。
RHEL / AlmaLinux / Rocky Linux
sudo dnf install -y memcached
sudo systemctl enable --now memcached
systemctl status memcached
手順2:設定を確認・変更する
設定ファイルの場所と書き方は、ディストリビューションによって違います。
Ubuntu / Debian:/etc/memcached.conf
パッケージを入れた直後の主な設定は次のとおりです。
| 設定 | 意味 |
|---|---|
-m 64 |
アイテムの保存に使うメモリの上限(MB) |
-p 11211 |
待ち受けるTCPポート |
-u memcache |
実行するユーザー |
-l 127.0.0.1 と -l ::1 |
待ち受けるアドレス(自分自身からの接続だけ受け付ける) |
logfile /var/log/memcached.log |
ログの出力先 |
# -c 1024 |
同時接続数の上限(コメントのまま=既定の 1024) |
たとえばメモリの上限を 256MB にするには、-m 64 の行を書き換えて再起動します。
sudo nano /etc/memcached.conf
# -m 64 を -m 256 に変更して保存
sudo systemctl restart memcached
RHEL 系:/etc/sysconfig/memcached
RHEL 系では、変数で設定します。
# /etc/sysconfig/memcached(AlmaLinux 9 の初期値)
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 127.0.0.1,::1"
CACHESIZE がメモリの上限(MB)、MAXCONN が同時接続数の上限です。変更したら sudo systemctl restart memcached で反映します。
メモリ量の決め方
-m(CACHESIZE)は上限で、上限に達すると古いデータから追い出されます。同じサーバーで Web サーバー、PHP、データベースも動かしている場合は、それらが使うメモリを差し引いた残りの範囲で決めます。大きくしすぎてサーバー全体がメモリ不足になると、かえって遅くなります。
手順3:外部に公開しない
Memcached には、既定では認証の仕組みがありません。ポート 11211 に届けば誰でも読み書きできます。
- 待ち受けアドレスは 127.0.0.1(と ::1)のままにする: 上の初期設定のとおり、同じサーバーからだけ接続を受け付けます。
- 別のサーバーから使う場合:
-lを内部ネットワークのアドレスにし、ファイアウォールで接続元を Web サーバーだけに絞ります。インターネット側にポート 11211 を開けないでください。 - UDP は無効のまま: memcached 1.6 系の既定では UDP ポートは無効(
-U 0)です。UDP を使う設定は、外部に開いていると増幅攻撃に悪用されることがあります。
手順4:動作を確認する
# libmemcached-tools の memcstat で統計を表示(Debian / Ubuntu ではこの名前)
memcstat --servers=127.0.0.1
# nc で stats コマンドを送って確認する方法
printf "stats\nquit\n" | nc 127.0.0.1 11211 | grep -E "version|curr_items|get_hits|limit_maxbytes"
古い記事にある memstat は、Debian / Ubuntu のパッケージでは memcstat という名前になっています。limit_maxbytes は -m で指定したメモリ上限(バイト)、get_hits はキャッシュから返せた回数です。
ログは、Ubuntu では /var/log/memcached.log に出ます。ただし詳しい内容が出るのは、設定ファイルの -v(または -vv)を有効にしたときだけです。起動に失敗したときは、まず journalctl -u memcached を確認します。
手順5:PHP から使う
PHP には、名前の似た2つの拡張機能があります。
| 拡張 | クラス名 | Ubuntu 24.04 のパッケージ |
|---|---|---|
| memcached(libmemcached を使う) | Memcached |
php8.3-memcached(php-memcached) |
| memcache(古くからある別の拡張) | Memcache |
php-memcache |
使うプラグインやライブラリがどちらを必要とするかを確認してから入れます。ここでは memcached 拡張を例にします。
sudo apt install -y php8.3-memcached
# PHP-FPM を使っている場合
sudo systemctl restart php8.3-fpm
# Apache の mod_php の場合は sudo systemctl restart apache2
次のスクリプトで、読み書きできるかを確かめます。
<?php
// memcached-test.php: PHP から Memcached に書き込み、読み出せるかを確かめる
$m = new Memcached();
$m->addServer( '127.0.0.1', 11211 );
$m->set( 'hello', 'world', 60 ); // 60 秒で期限切れ
var_dump( $m->get( 'hello' ) ); // string(5) "world" と表示されれば成功
var_dump( $m->getResultMessage() );
php memcached-test.php
確認が終わったら、このファイルは Web から見える場所に置いたままにしないでください。
WordPress で使うときの注意
WordPress は、wp-content/object-cache.php(オブジェクトキャッシュのドロップイン)があると、そのファイルを通してキャッシュを外部に保存します。Memcached を入れただけでは WordPress は使わないので、ドロップインを用意するプラグインが必要です。
- W3 Total Cache: プラグインの説明で、キャッシュの方式の1つに Memcached を挙げています。
- Memcached Object Cache(wordpress.org の
memcached):memcache拡張(PECL memcache)を使うドロップインです。2026年11月時点では最終更新が2022年で、最近のWordPressのバージョンでの動作確認がされていないため、使う前に検証環境で確かめてください。この説明ページでは、wp-config.phpにWP_CACHE_KEY_SALTを設定して、インストールごとに異なる値にするよう案内しています。
1台の Memcached を複数のサイトで共有する場合は、キーが重ならないようにサイトごとに接頭辞(ソルト)を分けます。現在は Redis を使うオブジェクトキャッシュのほうが対応プラグインの選択肢が多いので、比較も含めて トランジェントとオブジェクトキャッシュの保存先 も参考にしてください。