Ubuntu 26.04 で Web アプリケーションを運用する場合、Redis はキャッシュ、セッション、ロック、キューなどの用途でよく使われます。Nextcloud や PHP アプリケーションでも、MariaDB と並んで重要な周辺コンポーネントです。
この記事では、Redis をローカルキャッシュとして安全に使うために、パッケージ導入、待ち受け設定、protected-mode、Unix socket、永続化、メモリ、ログ確認をまとめます。
- Redis の導入とサービス確認
bind、protected-mode、port の確認- Unix socket の使い方と権限
- RDB / AOF など永続化の考え方
- メモリ設定、ログ、PHP アプリケーション連携
| 対象 OS | Ubuntu 26.04 Server |
|---|---|
| キャッシュ | Redis |
| パッケージ | redis-server |
| 設定ファイル | /etc/redis/redis.conf |
| サービス | redis-server.service |
Redis の用途を確認する
Redis は高速なインメモリデータストアです。キャッシュとして使う場合でも、アプリケーションのロックやセッションに使う場合でも、外部公開せずにアプリケーションサーバー内または内部ネットワークで扱うのが基本です。
- まず
127.0.0.1と::1のローカル待ち受けにする protected-mode yesを維持する- 必要に応じて Unix socket で接続する
- 用途に応じて RDB / AOF / メモリ上限を決める
- Web アプリケーション側の接続先と権限を合わせる
Redis をインストールする
APT で redis-server を導入し、サービスを有効化して起動します。
sudo apt update
sudo apt install -y redis-server
sudo systemctl enable --now redis-server.service
systemctl status redis-server.service --no-pagerredis-cli で動作確認する
Redis の基本確認は redis-cli ping で行います。PONG が返れば、ローカル接続とサービス起動は確認できます。
redis-server --version
redis-cli --version
redis-cli ping
redis-cli INFO server
redis-cli INFO clients設定ファイルを確認する
Redis の主な設定は /etc/redis/redis.conf にあります。編集前に、待ち受け、protected-mode、port、ログ、永続化、Unix socket の設定を確認します。
sudo grep -E '^(bind|protected-mode|port|unixsocket|save|appendonly|logfile|dir|maxmemory|maxmemory-policy)' /etc/redis/redis.conf
sudo redis-server /etc/redis/redis.conf --test-memory 2
redis-cli CONFIG GET bind
redis-cli CONFIG GET protected-mode
redis-cli CONFIG GET portローカル待ち受けにする
単一サーバー内のキャッシュとして使う場合は、bind 127.0.0.1 ::1 と protected-mode yes を基本にします。外部公開が必要な場合でも、ファイアウォール、認証、接続元制限を別途設計します。
sudo sed -i 's/^bind .*/bind 127.0.0.1 ::1/' /etc/redis/redis.conf
sudo sed -i 's/^protected-mode .*/protected-mode yes/' /etc/redis/redis.conf
sudo sed -i 's/^port .*/port 6379/' /etc/redis/redis.conf
sudo sed -i 's/^tcp-backlog .*/tcp-backlog 511/' /etc/redis/redis.conf
sudo sed -i 's/^timeout .*/timeout 0/' /etc/redis/redis.conf
sudo sed -i 's/^tcp-keepalive .*/tcp-keepalive 300/' /etc/redis/redis.conf
sudo systemctl restart redis-server.service
systemctl status redis-server.service --no-pager
ss -ltnp | grep 6379
redis-cli pingUnix socket を使う
PHP アプリケーションや同一サーバー内のサービスから接続する場合、TCP ではなく Unix socket を使う構成もあります。socket を使う場合は、パスと権限、アプリケーション実行ユーザーのグループを確認します。
sudo sed -i 's|^# unixsocket .*|unixsocket /run/redis/redis-server.sock|' /etc/redis/redis.conf
sudo sed -i 's/^# unixsocketperm .*/unixsocketperm 770/' /etc/redis/redis.conf
sudo systemctl restart redis-server.service
ls -l /run/redis/
redis-cli -s /run/redis/redis-server.sock ping
getent group redis永続化を確認する
Redis を純粋なキャッシュとして使う場合と、再起動後もデータを残したい場合では永続化の考え方が変わります。標準的な RDB 保存や AOF の有無を確認します。
sudo sed -i 's/^appendonly .*/appendonly no/' /etc/redis/redis.conf
sudo sed -i 's|^dir .*|dir /var/lib/redis|' /etc/redis/redis.conf
sudo sed -i 's/^dbfilename .*/dbfilename dump.rdb/' /etc/redis/redis.conf
sudo systemctl restart redis-server.service
redis-cli CONFIG GET save
redis-cli CONFIG GET appendonly
redis-cli CONFIG GET dir
sudo ls -lh /var/lib/redisメモリ上限と eviction を考える
Redis はメモリ上で動くため、用途に応じて maxmemory と maxmemory-policy を設計します。キャッシュ用途では退避ポリシーを決めますが、ロックやセッションを扱う場合は不用意な eviction が障害につながることがあります。
sudo sed -i 's/^# maxmemory .*/maxmemory 512mb/' /etc/redis/redis.conf
sudo sed -i 's/^# maxmemory-policy .*/maxmemory-policy allkeys-lru/' /etc/redis/redis.conf
sudo systemctl restart redis-server.service
redis-cli INFO memory
redis-cli CONFIG GET maxmemory
redis-cli CONFIG GET maxmemory-policyPHP アプリケーションから使う前提を確認する
PHP アプリケーションから Redis を使う場合は、PHP 側の Redis 拡張、接続先、socket 権限を確認します。PHP-FPM の実行ユーザーが socket に接続できるかが重要です。
php -m | grep -i redis
systemctl status php8.5-fpm.service --no-pager
id www-data
ls -l /run/redis/redis-server.sockログを確認する
Redis が起動しない、接続できない、メモリ不足が疑われる場合は、systemd journal と Redis のログを確認します。
systemctl status redis-server.service --no-pager
journalctl -u redis-server.service --no-pager -n 100
sudo tail -n 100 /var/log/redis/redis-server.log
redis-cli INFO stats
redis-cli INFO memory公開前の確認ポイント
redis-server.serviceが起動しているredis-cli pingがPONGを返すbindが意図した範囲になっているprotected-mode yesを確認している- Unix socket を使う場合は socket パスと権限を確認している
- 用途に応じて RDB / AOF / メモリ上限を決めている
- ログ確認の場所を把握している
まとめ
Ubuntu 26.04 の Redis 基本設定では、redis-server を導入し、redis-server.service、/etc/redis/redis.conf、bind、protected-mode、Unix socket、永続化、メモリ設定を順番に確認します。
Web アプリケーション基盤では、Redis を不要に外部公開せず、アプリケーションからの接続方法と権限、再起動時のデータ扱い、メモリ上限、ログ確認まで含めて運用できる状態にしておくことが大切です。

