Ubuntu + Nextcloud で Redis を設定する方法

NextCloudのメモリキャッシュについて

NextCloudのブラウザで管理者設定にログインすると、下記のような警告メッセージが表示される場合があります。
原因はメモリキャッシュ関連をインストールしていないと、以下の警告メッセージが表示されます

メモリキャッシュを利用していない状況だったので、Redisを導入しようと思います。

Redisを利用する最大のメリットは、パフォーマンスの大幅な向上と、スケーラビリティの確保があります

主な利点は以下の通りです。

  • 処理速度の高速化: Redisはデータをメモリ上に保存するインメモリデータベースです。ハードディスクへのアクセスと比較して、データの読み書きが非常に高速なため、Nextcloud全体の応答速度が向上します。
  • データベースの負荷軽減: Nextcloudはデフォルトでデータベース (MySQL/MariaDB等) を使用しますが、Redisをキャッシュやセッションストアとして利用することで、データベースへのクエリ負荷を大幅に減らすことができます。
  • ファイルロックの効率化: Nextcloudではファイルの同期や編集時の競合を防ぐためにファイルロック機能が重要です。Redisをファイルロックのメカニズムとして使用すると、データベースを使用するよりもはるかに高速に処理され、特にファイル同期のパフォーマンスが向上します。
  • セッション管理の改善: ユーザーのログイン状態などのセッションデータをRedisで管理することで、ページ移動時の遅延が減少し、ユーザーエクスペリエンスが向上します。
  • スケーラビリティ: ユーザー数やデータ量が増加した場合でも、Redisを利用することで効率的にパフォーマンスを維持・向上させることが可能となり、大規模な環境での運用に適しています

Redis をインストールする方法

Redis をaptコマンド等でインストールします。

# ubuntuの場合
$ sudo apt update
$ sudo apt install redis-server

# Redhat系の場合(Rocky / AlmaLinux / CentOS Stream等)
$ sudo dnf install redis php-redis

インストール後、サービスが起動していることを確認します。active (running) と表示されれば OK です。

# ubuntuの場合
$ sudo systemctl status redis-server

# Redhat系の場合(Rocky / AlmaLinux / CentOS Stream等)
$ sudo systemctl enable --now redis
$ sudo systemctl start redis-server
$ sudo systemctl status redis-server

Redis を TCP 接続で利用する

Nextcloud では Redis を TCP(127.0.0.1:6379)で利用する構成が安定します。
標準設定では TCP で起動しているため、このまま利用します。

※ /etc/redis/redis.conf に特別な変更は不要です。

Redis のメモリ管理を最適化

Redis はメモリが満杯になるとデータが壊れる(Eviction)ことがあります。
Nextcloud での白画面トラブルを防ぐため、Redis のメモリの最大値を変更します。

$ sudo vim /etc/redis/redis.conf
maxmemory 256mb
maxmemory-policy allkeys-lru

設定後は、Redis を再起動します。

$ sudo systemctl restart redis-server

Nextcloud 用に Redis を設定する

Nextcloud の config.php に Redis への接続設定を追記します

$ sudo vim /var/www/nextcloud/config/config.php
'memcache.local' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',

'redis' => array(
    'host' => '127.0.0.1',
    'port' => 6379,
),

【設定ポイント】

  • memcache.local → Nextcloud の内部キャッシュ
  • memcache.locking → ファイルロック処理
  • distributed は単一サーバーでは不要(不安定の原因になるため省略)

Nextcloud 管理画面で警告が消えることを確認

以下の警告が消えていれば設定成功です。

  • トランザクションファイルロック
  • メモリキャッシュが設定されていません

Nextcloud が Redis を正常に利用し始めています。

\ 最新情報をチェック /