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-1 | 2 GB | 256 MB |
| VDS-2 | 4 GB | 512 MB |
| VDS-3 | 8 GB | 1〜2 GB |
| VDS-5 | 24 GB | 4〜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 allowed | noeviction ポリシーで maxmemory に達した |
DENIED Redis is running in protected mode | bind 127.0.0.1 での外部アクセス — これは仕様です |
| 再起動後にデータが消えた | 永続化が有効になっていない |
| マシンがスワップに入った | maxmemory と他のサービスの合計がティアのメモリを超えている |
本番サーバーで
KEYS *を使用しないでください。このコマンドはすべてのキーを走査する間、Redis をブロックします。反復処理にはSCANを使用してください。