Skip to content
VDS · データベース

Redis:キャッシュとキュー

VDS への Redis のインストール、パスワードとローカルアドレスへのバインド、メモリ制限と削除ポリシー、キャッシュとキューの違いについて説明します。

更新日 2026年8月23日

Redis はデータをメモリ上に保持するため、キャッシュ、セッション、カウンター、タスクキューなどに利用されます。VPS 上では、メモリに収まる範囲でのみ有効です。空きメモリを超えるワーキングセットは、もはや高速化ではなくクラッシュの原因になります。

インストール

apt update && apt install -y redis-server        # Debian, Ubuntu
dnf install -y redis                             # AlmaLinux, CentOS Stream
systemctl enable --now redis-server
redis-cli ping

PONG が返れば、サーバーは稼働しています。

必須の設定

/etc/redis/redis.conf ファイル:

bind 127.0.0.1
protected-mode yes
requirepass long-random-password
maxmemory 512mb
maxmemory-policy allkeys-lru
appendonly no
systemctl restart redis-server
redis-cli -a 'password' ping

スキャナは、インターネットに公開されたパスワードなしの Redis を数分で発見し、マイニングに悪用します。アプリケーションが同じマシン上にある場合は、bind 127.0.0.1 を維持し、ポート 6379 を外部に公開しないでください。外部アクセスが必要な場合は、SSH トンネルまたは VPN のみを使用してください。

メモリとエビクション

maxmemory を明示的に設定してください。設定しない場合、Redis はシステムがプロセスを強制終了し始めるまで増え続けます。ティアのメモリの 4 分の 1 を割り当てるのが妥当です。

ティアマシンメモリmaxmemory
VDS-12 GB256 MB
VDS-24 GB512 MB
VDS-38 GB1〜2 GB
VDS-524 GB4〜6 GB

ポリシーは役割によって異なります。

  • キャッシュ — allkeys-lru、古いキーは通知なく削除されます。
  • タスクキュー — noeviction、タスクの消失は許容できないため、書き込みエラーのほうがましです。

まさにこの矛盾があるため、キャッシュとキューを 1 つのデータベースに混在させないでください。別々のデータベース番号(SELECT 1)または 2 つのインスタンスに分けてください。

ディスクへの永続化

デフォルトでは、Redis は定期的にスナップショットを dump.rdb にダンプします。純粋なキャッシュの場合、これは不要なディスク書き込みです。save を無効にしてください。キューの場合は appendonly yes を有効にしてください。そうすれば、マシンの再起動後もタスクは失われません。

ディスク書き込み速度はティアによって制限されることに注意してください。コアあたり 60 MB/s、下限 60、上限 400 MB/s です。

監視

redis-cli -a 'password' info memory
redis-cli -a 'password' info stats
redis-cli -a 'password' --stat
redis-cli -a 'password' slowlog get 10

重要な指標は evicted_keys です。継続的に増加している場合、メモリが不足しており、キャッシュが効果を発揮していません。

よくある間違い

症状原因
NOAUTH Authentication requiredアプリケーションにパスワードが渡されていない
OOM command not allowednoeviction ポリシーで maxmemory に達した
DENIED Redis is running in protected modebind 127.0.0.1 での外部アクセス — これは仕様です
再起動後にデータが消えた永続化が有効になっていない
マシンがスワップに入ったmaxmemory と他のサービスの合計がティアのメモリを超えている

本番サーバーで KEYS * を使用しないでください。このコマンドはすべてのキーを走査する間、Redis をブロックします。反復処理には SCAN を使用してください。