手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 26.04 Redis の基本設定 – ローカルキャッシュと Unix socket を管理する

関連する記事

Ubuntu 26.04 で Web アプリケーションを運用する場合、Redis はキャッシュ、セッション、ロック、キューなどの用途でよく使われます。Nextcloud や PHP アプリケーションでも、MariaDB と並んで重要な周辺コンポーネントです。

この記事では、Redis をローカルキャッシュとして安全に使うために、パッケージ導入、待ち受け設定、protected-mode、Unix socket、永続化、メモリ、ログ確認をまとめます。

この記事で扱うこと
  • Redis の導入とサービス確認
  • bindprotected-mode、port の確認
  • Unix socket の使い方と権限
  • RDB / AOF など永続化の考え方
  • メモリ設定、ログ、PHP アプリケーション連携
対象 OSUbuntu 26.04 Server
キャッシュRedis
パッケージredis-server
設定ファイル/etc/redis/redis.conf
サービスredis-server.service
参考書籍
参考書籍
Redis in Action
Redis のデータ構造、キャッシュ、キュー、運用を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見る
このリンクは Amazon アソシエイトリンクです。

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-pager

redis-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 ::1protected-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 ping

Unix 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 はメモリ上で動くため、用途に応じて maxmemorymaxmemory-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-policy

PHP アプリケーションから使う前提を確認する

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 pingPONG を返す
  • bind が意図した範囲になっている
  • protected-mode yes を確認している
  • Unix socket を使う場合は socket パスと権限を確認している
  • 用途に応じて RDB / AOF / メモリ上限を決めている
  • ログ確認の場所を把握している

まとめ

Ubuntu 26.04 の Redis 基本設定では、redis-server を導入し、redis-server.service/etc/redis/redis.confbindprotected-mode、Unix socket、永続化、メモリ設定を順番に確認します。

Web アプリケーション基盤では、Redis を不要に外部公開せず、アプリケーションからの接続方法と権限、再起動時のデータ扱い、メモリ上限、ログ確認まで含めて運用できる状態にしておくことが大切です。

関連する記事
Ubuntu 26.04 Redis の基本設定 – ローカルキャッシュと Unix socket を管理する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る