Redis設定ファイルは、Redisサーバーの動作を制御する重要な設定ファイルです。以下に主要な設定項目とその説明を記載します。
基本設定
# デーモンとして実行するかどうか。yesに設定するとバックグラウンドで実行されます。
daemonize yes
# PIDファイルのパスを指定します。複数のRedisインスタンスを実行する場合は、
# 各インスタンスで異なるPIDファイルとポートを指定する必要があります。
pidfile /var/run/redis_6379.pid
# Redisが使用するポート番号を指定します。デフォルトは6379です。
port 6379
# 高負荷環境での遅いクライアント接続問題を避けるためのバックログサイズ
tcp-backlog 511
# 特定のIPアドレスからの接続のみを受け入れる場合に指定します。
# 設定しない場合はすべての接続を受け入れます。
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1
# クライアント接続のタイムアウト時間(秒)。指定時間内にコマンドが送信されない場合、
# 接続は閉じられます。0に設定すると無制限になります。
timeout 0
# TCP keepalive設定(Linuxの場合)。ACKを送信する間隔(秒)を指定します。
# 接続を閉じるには2倍の時間が必要です。デフォルトは0です。
tcp-keepalive 0
# ログレベルを指定します。本番環境ではnoticeが推奨されます。
# debug: 開発・テスト用に多くの情報を記録
# verbose: debugより少ない有用な情報を記録
# notice: 本番環境向けの標準的な詳細レベル
# warning: 重大な情報のみを記録
loglevel notice
# ログファイルのパスを指定します。
# デフォルトはstdout(標準出力)ですが、バックグラウンド実行時は/dev/nullに出力されます。
logfile /var/log/redis/redis.log
# 利用可能なデータベースの数を指定します。デフォルトは16です。
# データベース番号は0からdatabase-1の範囲です。
databases 16
スナップショット設定
# データをディスクに保存する条件を指定します。
# save <秒数> <変更数> の形式で指定します。
# 以下はデフォルトの設定例です:
# 900秒以内に1つのキーが変更された場合
# save 900 1
# 300秒以内に10個のキーが変更された場合
# save 300 10
# 60秒以内に10000個のキーが変更された場合
# save 60 10000
# バックグラウンド保存エラー時に書き込みを停止するかどうか
stop-writes-on-bgsave-error yes
# RDBファイルに保存する際にデータを圧縮するかどうか(デフォルトはyes)
rdbcompression yes
# RDBファイルにチェックサムを含めるかどうか
rdbchecksum yes
# RDBファイルの名前を指定します。デフォルトはdump.rdbです。
dbfilename dump.rdb
# ワーキングディレクトリを指定します。
# ここにはRDBファイルとAOFファイルが保存されます。
# ディレクトリを指定する必要があります。
dir /var/lib/redis-server/
レプリケーション設定
# マスター/スレーブレプリケーションを設定します。
# このサーバーをスレーブとして動作させる場合に、マスターサーバーの
# IPアドレスとポートを指定します。
# slaveof
# マスターサーバーにパスワード保護が設定されている場合の認証パスワード
# masterauth <password>
# マスターサーバーとの接続が失われた場合やレプリケーション中の
# スレーブの動作モードを指定します。
# yes: スレーブはクライアントリクエストに応答し続けます(デフォルト)
# no: INFOとSLAVEOFコマンド以外のリクエストはエラーを返します
slave-serve-stale-data yes
# スレーブインスタンスが書き込みを受け入れるかどうか。
# Redis 2.6以降、デフォルトはread-onlyです。
slaveread-only yes
# スレーブがマスターにPINGを送信する間隔(秒)を指定します。
# デフォルトは10秒です。
# repl-ping-slave-period 10
# マスターからスレーブへのデータ転送タイムアウト(秒)を指定します。
# デフォルトは60秒です。
# repl-timeout 60
# スレーブのSYNC後でTCP_NODELAYを無効にするかどうか。
# yes: 小さいTCPパケットを使用し、帯域幅を節約しますが遅延が発生する可能性があります
# no: 遅延を減らしますが、帯域幅を多く使用します
repl-disable-tcp-nodelay no
# レプリケーションバックログサイズを指定します。
# 値が大きいほど、スレーブの再接続後の部分レプリケーションに時間がかかります。
# repl-backlog-size 1mb
# 最後のスレーブ接続が切断された後、バックログが解放されるまでの時間(秒)を指定します。
# 0は永続的に保持することを意味します。
# repl-backlog-ttl 3600
# マスターがダウンした場合にスレーブを新しいマスターとして昇格させる優先度を指定します。
# 値が小さいほど優先度が高く、0は昇格させないことを意味します。
slave-priority 100
# 指定数以上のスレーブ接続があり、遅延が指定秒以内の場合に
# マスターの書き込みを停止する設定です。
# min-slaves-to-write 3
# min-slaves-max-lag 10
# 0に設定すると無効になります(デフォルト)
セキュリティ設定
# クライアント接続時に必要なパスワードを設定します。
# 注意: Redisは高速なため、強力なパスワード設定が必要です。
# requirepass
# 危険なコマンドの名前を変更します。
# 例: CONFIGコマンドを予測困難な名前に変更
# rename-command CONFIG
# コマンドを完全に無効化する場合は空文字列を指定
# rename-command CONFIG ""
リソース制限設定
# 同時接続クライアント数の上限を設定します。
# 0は無制限を意味します。
# maxclients 10000
# Redisが使用できる最大メモリ量を指定します。
# maxmemory <bytes>
# メモリ使用量が上限に達した際のデータ削除戦略を指定します。
# volatile-lru: 期限切れキーの中でLRUアルゴリズムで削除
# allkeys-lru: すべてのキーの中でLRUアルゴリズムで削除
# volatile-random: 期限切れキーの中からランダムに削除
# allkeys-random: すべてのキーからランダムに削除
# volatile-ttl: 最もTTLが短いキーを削除
# noeviction: 削除せず、書き込み時にエラーを返す(デフォルト)
maxmemory-policy volatile-lru
# LRUおよびTTLアルゴリズムのサンプル数を指定します。
# デフォルトは3です。
maxmemory-samples 3
AOF設定
# AOF(Append Only File)モードを有効にするかどうか。
# デフォルトはnoです。
appendonly no
# AOFファイル名を指定します(デフォルトはappendonly.aof)
# appendfilename appendonly.aof
# AOFファイルの同期戦略を指定します。
# no: OSに同期処理を任せる(高速)
# always: 書き込みごとに同期(低速だが最も安全)
# everysec: 1秒ごとに同期(デフォルト、速度と安全性のバランス)
appendfsync everysec
# AOF再書き込み中の同期動作を制御します。
# no: 再書き込み中も同期を行う(デフォルト)
# yes: 再書き込み中は同期を遅延させる
no-appendfsync-on-rewrite no
# AOFファイルが指定サイズに達した場合に自動再書き込みを開始する設定。
# auto-aof-rewrite-percentage 100
# auto-aof-rewrite-min-size 64mb
高度な設定
# Luaスクリプトの最大実行時間(ミリ秒)
# 0または負数は無制限を意味します。
lua-time-limit 5000
# スローログ記録の閾値(マイクロ秒)
# この時間を超えるコマンドが記録されます。
slowlog-log-slower-than 10000
# スローログの最大エントリ数
# 超過した古いエントリは削除されます。
slowlog-max-len 128
# イベント通知設定
# キースペースイベント(K)とキーイベント(E)を有効にする例:
# notify-keyspace-events KE
# デフォルトは無効(空文字列)
notify-keyspace-events ""
# データ構造の最適化設定
# Hashのエントリ数と値のサイズによる圧縮設定
hash-max-ziplist-entries 512
hash-max-zipmap-value 64
# Listのエントリ数と値のサイズによる圧縮設定
list-max-ziplist-entries 512
list-max-ziplist-value 64
# Setの数値エントリ数による圧縮設定
set-max-intset-entries 512
# Sorted Setのエントリ数と値のサイズによる圧縮設定
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
# ハッシュテーブルの再ハッシュ処理を有効にするかどうか
# 厳密なリアルタイム要件がない場合はyesを推奨
activerehashing yes
# クライアント出力バッファの制限
# normal: 通常クライアント
# slave: スレーブとMONITORクライアント
# pubsub: パブサブチャネルを購読しているクライアント
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
# 内部タスクの実行頻度(Hz)
# 値が高いとCPU使用量が増加しますが、タイムアウト処理がより正確になります。
hz 10
# AOF再書き込み時の増分的同期を有効にする
aof-rewrite-incremental-fsync yes