Redis設定完全ガイド:redis.confを徹底解説【初心者向け】
Redis は、インメモリデータストアとして知られ、高速なデータアクセスと柔軟なデータ構造により、キャッシュ、セッション管理、ランキング、メッセージブローカーなど、幅広い用途で利用されています。その性能を最大限に引き出すためには、適切な設定が不可欠です。Redis の設定は、主に redis.conf
ファイルを通じて行われます。
本記事では、Redis の redis.conf
ファイルを徹底的に解説し、初心者が Redis の設定を理解し、最適化するための知識を身につけることを目指します。各設定項目の意味、デフォルト値、変更時の影響などを詳しく説明することで、読者が自身のユースケースに最適な Redis 設定を構築できるよう支援します。
目次
-
Redis と redis.conf の概要
- Redis の概要と主な特徴
- redis.conf ファイルとは
- redis.conf ファイルの場所と編集方法
-
redis.conf の主要な設定項目
- GENERAL:
daemonize
pidfile
port
bind
tcp-backlog
timeout
tcp-keepalive
loglevel
logfile
databases
always-show-logo
- SECURITY:
requirepass
rename-command
protected-mode
- LIMITS:
maxmemory
maxmemory-policy
maxmemory-samples
maxclients
- APPEND ONLY MODE:
appendonly
appendfilename
appendfsync
no-appendfsync-on-rewrite
auto-aof-rewrite-percentage
auto-aof-rewrite-min-size
- REPLICATION:
replicaof
(旧slaveof
)masterauth
(旧slaveauth
)replica-serve-stale-data
(旧slave-serve-stale-data
)replica-read-only
(旧slave-read-only
)replica-priority
(旧slave-priority
)replica-lazy-flush
(旧slave-lazy-flush
)replica-disable-tcp-nodelay
(旧slave-disable-tcp-nodelay
)replica-repl-ping-replica-period
(旧slave-repl-ping-replica-period
)replica-repl-timeout
(旧slave-repl-timeout
)replica-ignore-ttl
(旧slave-ignore-ttl
)
- CLUSTER:
cluster-enabled
cluster-config-file
cluster-node-timeout
cluster-require-full-coverage
cluster-migration-barrier
cluster-allow-reads-when-down-after-fork
- LAZY FREEING:
lazyfree-lazy-eviction
lazyfree-lazy-expire
lazyfree-lazy-server-del
replica-lazy-flush
(replicationセクションにも記載)
- ADVANCED CONFIG:
hash-max-ziplist-entries
hash-max-ziplist-value
list-max-ziplist-size
list-compress-depth
set-max-intset-entries
zset-max-ziplist-entries
zset-max-ziplist-value
stream-node-max-bytes
stream-node-max-entries
activerehashing
hz
aof-load-truncated
dynamic-hz
lua-time-limit
slowlog-log-slower-than
slowlog-max-len
latency-monitor-threshold
client-output-buffer-limit
- GENERAL:
-
パフォーマンスチューニングのヒント
- メモリ管理の最適化
- I/O 設定の調整
- ネットワーク設定の考慮
- 永続化方式の選択
-
セキュリティに関する考慮事項
- 認証設定とアクセス制限
- コマンド名の変更
- セキュリティアップデートの適用
-
redis.conf の変更と反映方法
- 設定ファイルの変更
- Redis サーバーの再起動と設定の反映
- 設定変更の確認
-
トラブルシューティング
- 設定エラーの特定
- パフォーマンス低下の改善
-
まとめ
1. Redis と redis.conf の概要
1.1 Redis の概要と主な特徴
Redis (Remote Dictionary Server) は、オープンソースのインメモリデータ構造ストアです。キーバリュー型のデータストレージとして機能し、文字列、ハッシュ、リスト、セット、ソート済みセットなど、様々なデータ構造をサポートしています。
Redis の主な特徴は以下のとおりです。
- 高速性: インメモリで動作するため、従来のディスクベースのデータベースと比較して非常に高速なデータアクセスが可能です。
- 多様なデータ構造: 複数のデータ構造をサポートしており、様々な用途に対応できます。
- 永続化: メモリ上のデータをディスクに保存する永続化機能を備えています。RDB (Redis Database) スナップショットと AOF (Append Only File) の 2 つの方式があります。
- トランザクション: ACID特性の一部をサポートするトランザクション機能を提供します。
- Pub/Sub: パブリッシュ/サブスクライブモデルをサポートしており、リアルタイムメッセージングやイベント通知などに利用できます。
- Lua スクリプト: Lua スクリプトを実行することで、複雑な処理をサーバー側で実行できます。
- クラスタリング: 複数の Redis ノードを組み合わせて、大規模なデータセットを処理できるクラスタリング機能をサポートしています。
- 高い可用性: Redis Sentinel や Redis Cluster を利用することで、高い可用性を実現できます。
これらの特徴により、Redis はキャッシュ、セッション管理、ランキング、リアルタイム分析、メッセージキュー、地理空間インデックスなど、幅広い用途で活用されています。
1.2 redis.conf ファイルとは
redis.conf
ファイルは、Redis サーバーの設定を記述するためのテキストファイルです。このファイルを通じて、Redis の動作に関する様々なパラメータを設定することができます。例えば、ポート番号、メモリ制限、永続化方式、セキュリティ設定などを redis.conf
ファイルで指定します。
redis.conf
ファイルは、Redis の起動時に読み込まれ、設定されたパラメータに基づいて Redis サーバーが動作します。そのため、Redis の性能やセキュリティを最適化するためには、redis.conf
ファイルの内容を理解し、適切に設定することが重要です。
1.3 redis.conf ファイルの場所と編集方法
redis.conf
ファイルの場所は、Redis のインストール方法や OS 環境によって異なります。一般的には、以下のいずれかの場所に配置されています。
/etc/redis/redis.conf
(Linux)/usr/local/etc/redis.conf
(macOS)- Redis のインストールディレクトリ
ファイルが見つからない場合は、以下のコマンドを使用して検索できます。
bash
find / -name redis.conf 2>/dev/null
redis.conf
ファイルはテキストファイルなので、テキストエディタを使用して編集できます。vi
、nano
、gedit
など、お好みのエディタを使用してください。
編集する際には、以下の点に注意してください。
- コメント:
#
で始まる行はコメントとして扱われます。設定項目をコメントアウトすることで、その設定を無効にできます。 - 設定項目: 各設定項目は、
キー 値
の形式で記述します。 - 単位: 一部の設定項目には単位が指定されています (例: メモリサイズは
MB
やGB
)。単位を間違えると、意図しない動作になる可能性があります。 - 構文: 設定ファイルの構文に誤りがあると、Redis サーバーが起動しなくなる可能性があります。変更を加える前に、元のファイルをバックアップしておくことをお勧めします。
2. redis.conf の主要な設定項目
redis.conf
ファイルには、様々な設定項目がありますが、ここでは特に重要な設定項目をカテゴリ別に分けて解説します。
2.1 GENERAL:
daemonize
:- 説明: Redis をデーモンとしてバックグラウンドで実行するかどうかを指定します。
- デフォルト値:
no
(フォアグラウンドで実行) - 推奨値:
yes
(本番環境) - 影響:
yes
に設定すると、Redis はバックグラウンドで実行され、ターミナルを閉じても動作し続けます。開発環境ではno
のままでも構いません。
pidfile
:- 説明: Redis プロセスの PID (Process ID) を保存するファイルパスを指定します。
- デフォルト値:
/var/run/redis/redis-server.pid
- 推奨値: デフォルト値のまま、または適切なディレクトリに変更
- 影響: Redis サーバーの起動・停止スクリプトなどで、このファイルに保存された PID を使用してプロセスを管理します。
port
:- 説明: Redis がリッスンする TCP ポート番号を指定します。
- デフォルト値:
6379
- 推奨値: デフォルト値のまま、または必要に応じて変更。ポート番号を変更する場合は、ファイアウォール設定も変更する必要があります。
- 影響: このポート番号で Redis サーバーに接続できるようになります。
bind
:- 説明: Redis がリッスンする IP アドレスを指定します。
- デフォルト値:
127.0.0.1
(ローカルホストのみ接続可能) - 推奨値: 必要に応じて変更。外部から接続を許可する場合は、サーバーの IP アドレスを指定するか、
0.0.0.0
(すべての IP アドレス) を指定します。ただし、セキュリティ上のリスクがあるため、信頼できるクライアントのみに接続を許可するように注意が必要です。 - 影響: 指定された IP アドレスからの接続のみを受け付けます。
tcp-backlog
:- 説明: TCP 接続のバックログキューの最大サイズを指定します。
- デフォルト値:
511
- 推奨値: 高負荷環境では値を大きくすることを検討してください。
- 影響: 接続要求が頻繁に発生する場合、バックログキューが溢れると接続が拒否される可能性があります。
timeout
:- 説明: クライアントがアイドル状態になってから接続を閉じるまでの秒数を指定します。
0
に設定すると、タイムアウトが無効になります。 - デフォルト値:
0
(タイムアウト無効) - 推奨値: 必要に応じて設定。長時間アイドル状態の接続が多い場合は、タイムアウトを設定することでリソースを節約できます。
- 影響: 指定された時間内にクライアントからリクエストがない場合、接続が閉じられます。
- 説明: クライアントがアイドル状態になってから接続を閉じるまでの秒数を指定します。
tcp-keepalive
:- 説明: TCP Keep-Alive を有効にするまでの秒数を指定します。
0
に設定すると、TCP Keep-Alive が無効になります。 - デフォルト値:
300
(5 分) - 推奨値: デフォルト値のまま、または必要に応じて変更。TCP Keep-Alive を有効にすると、アイドル状態の接続を定期的にチェックし、切断された接続を検出できます。
- 影響: TCP Keep-Alive を有効にすると、ネットワーク障害などによる接続断を早期に検出できます。
- 説明: TCP Keep-Alive を有効にするまでの秒数を指定します。
loglevel
:- 説明: Redis が記録するログレベルを指定します。
- デフォルト値:
notice
- 推奨値: デフォルト値のまま、または必要に応じて変更。
- 有効な値:
debug
: 開発環境での詳細なデバッグ情報verbose
: より多くの情報notice
: 本番環境向けの重要なイベントwarning
: 警告
- 影響: 指定されたログレベル以上のメッセージがログファイルに記録されます。
logfile
:- 説明: Redis のログを保存するファイルパスを指定します。
- デフォルト値:
""
(標準出力に出力) - 推奨値: ファイルパスを指定することをお勧めします。
- 影響: 指定されたファイルに Redis のログが記録されます。ログファイルは、Redis の動作状況を監視したり、問題を解決したりするのに役立ちます。
databases
:- 説明: Redis サーバーがサポートするデータベースの数を指定します。
- デフォルト値:
16
- 推奨値: デフォルト値のまま、または必要に応じて変更。複数のアプリケーションで Redis を使用する場合は、データベースを分けることでデータの分離を強化できます。
- 影響: 指定された数だけデータベースが作成されます。クライアントは
SELECT
コマンドを使用してデータベースを切り替えることができます。
always-show-logo
:- 説明: Redis サーバー起動時に Redis のロゴを表示するかどうかを指定します。
- デフォルト値:
yes
- 推奨値: 必要に応じて変更。ロゴ表示を無効にすることで、起動時のログ出力を削減できます。
- 影響: Redis サーバー起動時にロゴが表示されなくなります。
2.2 SECURITY:
requirepass
:- 説明: Redis サーバーへのアクセスに必要なパスワードを指定します。
- デフォルト値:
""
(パスワードなし) - 推奨値: 本番環境では必ず設定してください。
- 影響: このパスワードを知っているクライアントのみが Redis サーバーに接続できます。
rename-command
:- 説明: Redis コマンドの名前を変更することで、セキュリティを強化します。
- デフォルト値: 設定なし
- 推奨値: 危険なコマンド (例:
FLUSHALL
,CONFIG
) の名前を変更することを検討してください。 - 影響: 指定されたコマンドは、変更後の名前でしか実行できなくなります。
protected-mode
:- 説明: Redis が protected mode で動作するかどうかを指定します。 protected mode は、
bind
が設定されていない場合や、パスワードが設定されていない場合に、外部からのアクセスを制限する機能です。 - デフォルト値:
yes
(Redis 3.2 以降) - 推奨値: デフォルト値のまま、または必要に応じて変更。
- 説明: Redis が protected mode で動作するかどうかを指定します。 protected mode は、
2.3 LIMITS:
maxmemory
:- 説明: Redis が使用できる最大メモリサイズを指定します。
- デフォルト値:
0
(メモリ制限なし) - 推奨値: 本番環境では必ず設定してください。物理メモリの容量と、Redis 以外のプロセスが使用するメモリ量を考慮して適切な値を設定してください。
- 単位: バイト単位で指定できますが、
MB
(メガバイト) やGB
(ギガバイト) を使用することもできます。 - 影響: Redis が指定されたメモリサイズを超えると、
maxmemory-policy
に基づいてデータの削除が行われます。
maxmemory-policy
:- 説明:
maxmemory
に達した場合に、どのデータを削除するかを指定します。 - デフォルト値:
noeviction
- 推奨値: ユースケースに合わせて選択してください。
- 有効な値:
noeviction
: 新規データの書き込みを拒否します。allkeys-lru
: 最近最も使用されていないキーを削除します。volatile-lru
: TTL が設定されているキーの中で、最近最も使用されていないキーを削除します。allkeys-random
: ランダムにキーを削除します。volatile-random
: TTL が設定されているキーの中から、ランダムにキーを削除します。volatile-ttl
: TTL が設定されているキーの中で、TTL が最も短いキーを削除します。
- 影響: 指定されたポリシーに基づいて、Redis が自動的にデータを削除します。
- 説明:
maxmemory-samples
:- 説明:
maxmemory-policy
で LRU (Least Recently Used) または LFU (Least Frequently Used) を使用する場合、削除対象のキーを決定するためにサンプリングするキーの数を指定します。 - デフォルト値:
5
- 推奨値: 適切なパフォーマンスを得るために調整してください。
- 影響: サンプリング数を増やすと、より正確な LRU/LFU の近似が得られますが、CPU 負荷も増加します。
- 説明:
maxclients
:- 説明: Redis サーバーが同時に処理できるクライアントの最大数を指定します。
- デフォルト値:
10000
- 推奨値: 同時接続数を考慮して設定してください。
- 影響: クライアント数が
maxclients
を超えると、新規接続は拒否されます。
2.4 APPEND ONLY MODE:
appendonly
:- 説明: AOF (Append Only File) 永続化を有効にするかどうかを指定します。
- デフォルト値:
no
- 推奨値: データ損失を許容できない場合は
yes
に設定してください。 - 影響: AOF 永続化を有効にすると、Redis への書き込み操作がすべて AOF ファイルに記録されます。これにより、Redis サーバーがクラッシュした場合でも、AOF ファイルを再生することでデータを復旧できます。
appendfilename
:- 説明: AOF ファイルの名前を指定します。
- デフォルト値:
appendonly.aof
- 推奨値: デフォルト値のまま、または必要に応じて変更。
- 影響: 指定された名前の AOF ファイルに書き込み操作が記録されます。
appendfsync
:- 説明: AOF ファイルへの書き込みをいつディスクに同期するかを指定します。
- デフォルト値:
everysec
- 推奨値:
always
: 常に同期します。最も安全ですが、パフォーマンスが低下します。everysec
: 1 秒ごとに同期します。パフォーマンスと安全性のバランスが取れています。no
: OS に同期を任せます。最も高速ですが、データ損失のリスクがあります。
- 影響: 指定されたポリシーに基づいて、AOF ファイルへの書き込みがディスクに同期されます。
no-appendfsync-on-rewrite
:- 説明: AOF のリライト中に
appendfsync
の設定を一時的に無効にするかどうかを指定します。 - デフォルト値:
no
- 推奨値: IO負荷が高い環境では
yes
に設定することを検討してください。 - 影響: AOF リライト中に
appendfsync
が無効になると、リライト処理が高速化されますが、データ損失のリスクが高まります。
- 説明: AOF のリライト中に
auto-aof-rewrite-percentage
:- 説明: AOF ファイルが最後にリライトされた時点から何%増加した場合に、自動的にリライトを実行するかを指定します。
- デフォルト値:
100
- 推奨値: 必要に応じて調整してください。
- 影響: AOF ファイルが指定された割合で増加すると、自動的にリライトが実行され、AOF ファイルのサイズが削減されます。
auto-aof-rewrite-min-size
:- 説明: 自動 AOF リライトを実行するための AOF ファイルの最小サイズを指定します。
- デフォルト値:
64mb
- 推奨値: 必要に応じて調整してください。
- 影響: AOF ファイルのサイズが指定されたサイズ未満の場合、自動リライトは実行されません。
2.5 REPLICATION:
replicaof
(旧slaveof
)- 説明: Redis サーバーをレプリカ (以前のスレーブ) として設定し、指定されたマスターサーバーからデータをレプリケートします。
- デフォルト値: 設定なし (マスターサーバーとして動作)
- 推奨値: レプリケーションを構成する場合は、マスターサーバーの IP アドレスとポート番号を指定します。例:
replicaof 192.168.1.100 6379
- 影響: 指定されたマスターサーバーからデータがレプリケートされます。
masterauth
(旧slaveauth
)- 説明: マスターサーバーに認証が必要な場合に、レプリカサーバーが使用するパスワードを指定します。
- デフォルト値: 設定なし
- 推奨値: マスターサーバーにパスワードが設定されている場合は、必ず設定してください。
- 影響: レプリカサーバーは、指定されたパスワードを使用してマスターサーバーに認証を行います。
replica-serve-stale-data
(旧slave-serve-stale-data
)- 説明: マスターサーバーとの接続が失われた場合に、レプリカサーバーが古いデータを提供するかどうかを指定します。
- デフォルト値:
yes
- 推奨値: 状況に応じて設定してください。
- 影響:
yes
に設定すると、マスターサーバーとの接続が失われた場合でも、レプリカサーバーは古いデータを提供し続けます。no
に設定すると、マスターサーバーとの接続が失われた場合、レプリカサーバーはエラーを返します。
replica-read-only
(旧slave-read-only
)- 説明: レプリカサーバーへの書き込みを許可するかどうかを指定します。
- デフォルト値:
yes
- 推奨値: レプリカサーバーへの書き込みを許可しない場合は
yes
に設定してください。 - 影響:
yes
に設定すると、レプリカサーバーへの書き込みは拒否されます。
replica-priority
(旧slave-priority
)- 説明: マスターサーバーがダウンした場合に、どのレプリカサーバーを新しいマスターサーバーにするかの優先度を指定します。数値が小さいほど優先度が高くなります。
- デフォルト値:
100
- 推奨値: 必要に応じて調整してください。
- 影響: マスターサーバーがダウンした場合、優先度の高いレプリカサーバーが新しいマスターサーバーとして昇格します。
replica-lazy-flush
(旧slave-lazy-flush
)- 説明: レプリケーション中にフル同期が必要な場合に、レプリカサーバーがデータベースを非同期的にフラッシュするかどうかを指定します。
- デフォルト値:
no
- 推奨値: メモリ負荷が高い環境では
yes
に設定することを検討してください。 - 影響:
yes
に設定すると、レプリカサーバーはデータベースを非同期的にフラッシュし、同期処理が高速化されます。
replica-disable-tcp-nodelay
(旧slave-disable-tcp-nodelay
)- 説明: レプリカサーバーとの TCP 接続で Nagle アルゴリズムを無効にするかどうかを指定します。
- デフォルト値:
no
- 推奨値: 低レイテンシが重要な場合は
yes
に設定することを検討してください。 - 影響:
yes
に設定すると、Nagle アルゴリズムが無効になり、小さなパケットがすぐに送信されるようになります。
replica-repl-ping-replica-period
(旧slave-repl-ping-replica-period
)- 説明: レプリカサーバーがマスターサーバーに PING コマンドを送信する間隔を秒単位で指定します。
- デフォルト値:
10
- 推奨値: 必要に応じて調整してください。
- 影響: レプリカサーバーは、指定された間隔でマスターサーバーに PING コマンドを送信し、接続状態を維持します。
replica-repl-timeout
(旧slave-repl-timeout
)- 説明: レプリケーションのタイムアウトを秒単位で指定します。
- デフォルト値:
60
- 推奨値: 必要に応じて調整してください。
- 影響: 指定された時間内にレプリケーションが完了しない場合、タイムアウトエラーが発生します。
replica-ignore-ttl
(旧slave-ignore-ttl
)- 説明: レプリカサーバーがマスターサーバーからレプリケートされたキーの TTL (Time To Live) を無視するかどうかを指定します。
- デフォルト値:
no
- 推奨値: 必要に応じて調整してください。
- 影響:
yes
に設定すると、レプリカサーバーはマスターサーバーからレプリケートされたキーの TTL を無視し、キーは削除されません。
2.6 CLUSTER:
cluster-enabled
:- 説明: Redis Cluster を有効にするかどうかを指定します。
- デフォルト値:
no
- 推奨値: Redis Cluster を使用する場合は
yes
に設定してください。 - 影響:
yes
に設定すると、Redis サーバーは Redis Cluster モードで起動します。
cluster-config-file
:- 説明: Redis Cluster の設定ファイルを指定します。
- デフォルト値:
nodes.conf
- 推奨値: デフォルト値のまま、または必要に応じて変更。
- 影響: 指定されたファイルに Redis Cluster の設定情報が保存されます。
cluster-node-timeout
:- 説明: Redis Cluster のノードがダウンしていると判断するまでのタイムアウトをミリ秒単位で指定します。
- デフォルト値:
15000
- 推奨値: 必要に応じて調整してください。
- 影響: 指定された時間内にノードからの応答がない場合、ノードはダウンしていると判断され、フェイルオーバーが実行されます。
cluster-require-full-coverage
:- 説明: Redis Cluster のすべてのスロットがカバーされていない場合に、書き込みを許可するかどうかを指定します。
- デフォルト値:
yes
- 推奨値: データの一貫性を重視する場合は
yes
に設定してください。 - 影響:
yes
に設定すると、すべてのスロットがカバーされていない場合、書き込みは拒否されます。
cluster-migration-barrier
:- 説明: スロットを別のノードに移行する際に、空きスロットの最小数を指定します。
- デフォルト値:
1
- 影響: スロットの移行時に、指定された数以上の空きスロットが存在する場合のみ、移行が実行されます。
cluster-allow-reads-when-down-after-fork
:- 説明: Redis Cluster のフォーク後にノードがダウンした場合に、読み取りを許可するかどうかを指定します。
- デフォルト値:
no
- 推奨値: 可用性を重視する場合は
yes
に設定することを検討してください。
2.7 LAZY FREEING:
lazyfree-lazy-eviction
:- 説明:
maxmemory-policy
でデータを削除する際に、非同期的に解放するかどうかを指定します。 - デフォルト値:
no
- 推奨値: メモリ負荷が高い環境では
yes
に設定することを検討してください。 - 影響:
yes
に設定すると、データ削除処理が非同期的に実行され、メインスレッドの処理をブロックしません。
- 説明:
lazyfree-lazy-expire
:- 説明: TTL (Time To Live) によってキーが期限切れになった場合に、非同期的に解放するかどうかを指定します。
- デフォルト値:
no
- 推奨値: メモリ負荷が高い環境では
yes
に設定することを検討してください。 - 影響:
yes
に設定すると、期限切れのキーの削除処理が非同期的に実行され、メインスレッドの処理をブロックしません。
lazyfree-lazy-server-del
:- 説明:
DEL
コマンドでキーを削除する際に、非同期的に解放するかどうかを指定します。 - デフォルト値:
no
- 推奨値: メモリ負荷が高い環境では
yes
に設定することを検討してください。 - 影響:
yes
に設定すると、DEL
コマンドによるキーの削除処理が非同期的に実行され、メインスレッドの処理をブロックしません。
- 説明:
replica-lazy-flush
(replicationセクションにも記載):- 説明: レプリケーション中にフル同期が必要な場合に、レプリカサーバーがデータベースを非同期的にフラッシュするかどうかを指定します。 (replicationセクションにも記載)
- デフォルト値:
no
- 推奨値: メモリ負荷が高い環境では
yes
に設定することを検討してください。 - 影響:
yes
に設定すると、レプリカサーバーはデータベースを非同期的にフラッシュし、同期処理が高速化されます。
2.8 ADVANCED CONFIG:
これらの設定は、Redis の内部的な動作を制御し、パフォーマンスに影響を与える可能性があります。変更する際には、十分な理解と検証が必要です。
hash-max-ziplist-entries
: ハッシュが ziplist エンコーディングを使用する最大のエントリ数。hash-max-ziplist-value
: ハッシュが ziplist エンコーディングを使用する最大のエントリ値の長さ。list-max-ziplist-size
: リストが ziplist エンコーディングを使用する最大サイズ。負の値はバイト数、正の値はエントリ数。list-compress-depth
: リストの圧縮深さ。0 は圧縮しないことを意味します。set-max-intset-entries
: セットが intset エンコーディングを使用する最大のエントリ数。zset-max-ziplist-entries
: ソート済みセットが ziplist エンコーディングを使用する最大のエントリ数。zset-max-ziplist-value
: ソート済みセットが ziplist エンコーディングを使用する最大のエントリ値の長さ。stream-node-max-bytes
: ストリームのノードが使用できる最大バイト数。stream-node-max-entries
: ストリームのノードが使用できる最大エントリ数。activerehashing
: アクティブなリハッシュを有効にするかどうか。hz
: Redis が内部的なタスクを実行する頻度。aof-load-truncated
: 破損した AOF ファイルをロードするかどうか。dynamic-hz
:hz
を動的に調整するかどうか。lua-time-limit
: Lua スクリプトの実行時間制限。slowlog-log-slower-than
: スローログに記録するまでの時間 (マイクロ秒)。slowlog-max-len
: スローログの最大長。latency-monitor-threshold
: レイテンシ監視の閾値。client-output-buffer-limit
: クライアントの出力バッファ制限。
3. パフォーマンスチューニングのヒント
Redis の性能を最大限に引き出すためには、以下の点に注意して設定を調整してください。
- メモリ管理の最適化:
maxmemory
を適切に設定し、メモリの使用量を制限する。maxmemory-policy
をユースケースに合わせて選択し、適切なデータの削除ポリシーを設定する。lazyfree-lazy-*
オプションを有効にし、非同期的なメモリ解放を有効にする。
- I/O 設定の調整:
appendonly yes
を設定してAOF永続化を有効にし、データの安全性を確保する。appendfsync everysec
を設定し、パフォーマンスと安全性のバランスをとる。no-appendfsync-on-rewrite yes
を設定し、AOFリライト中のIO負荷を軽減する。
- ネットワーク設定の考慮:
tcp-keepalive
を有効にし、アイドル状態の接続を定期的にチェックする。tcp-backlog
を適切に設定し、接続要求が頻繁に発生する場合に接続が拒否されるのを防ぐ。
- 永続化方式の選択:
- RDB (Redis Database) スナップショットと AOF (Append Only File) のどちらを使用するか、または両方を使用するかを検討する。
- RDB は高速なバックアップとリストアに適していますが、データ損失のリスクがあります。
- AOF はデータ損失のリスクを低減できますが、RDB よりもパフォーマンスが低い場合があります。
4. セキュリティに関する考慮事項
Redis を安全に使用するためには、以下の点に注意して設定を行ってください。
- 認証設定とアクセス制限:
requirepass
を設定し、Redis サーバーへのアクセスにパスワードを要求する。bind
を適切に設定し、信頼できるクライアントのみに接続を許可する。- ファイアウォールを設定し、Redis へのアクセスを制限する。
- コマンド名の変更:
rename-command
を使用して、危険なコマンド (例:FLUSHALL
,CONFIG
) の名前を変更する。
- セキュリティアップデートの適用:
- Redis の最新バージョンを常に使用し、セキュリティアップデートを適用する。
5. redis.conf の変更と反映方法
5.1 設定ファイルの変更
テキストエディタを使用して、redis.conf
ファイルを編集します。変更する設定項目の値を変更し、ファイルを保存します。
5.2 Redis サーバーの再起動と設定の反映
redis.conf
ファイルを変更したら、Redis サーバーを再起動して、設定を反映する必要があります。再起動方法は、Redis のインストール方法や OS