Redis設定

Redisの設定ファイルはRedisインストールディレクトリにあり、ファイル名はredis.conf(Windowsではredis.windows.confという名前です)。

次のコマンドでCONFIG設定項目を表示または設定できます。


構文

Redis CONFIG コマンドの形式は次のとおりです:

redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME

例

redis 127.0.0.1:6379> CONFIG GET loglevel

1) "loglevel"
2) "notice"

使用*記号で全設定項目を取得します:

例

redis 127.0.0.1:6379> CONFIG GET *

  1) "dbfilename"
  2) "dump.rdb"
  3) "requirepass"
  4) ""
  5) "masterauth"
  6) ""
  7) "unixsocket"
  8) ""
  9) "logfile"
 10) ""
 11) "pidfile"
 12) "/var/run/redis.pid"
 13) "maxmemory"
 14) "0"
 15) "maxmemory-samples"
 16) "3"
 17) "timeout"
 18) "0"
 19) "tcp-keepalive"
 20) "0"
 21) "auto-aof-rewrite-percentage"
 22) "100"
 23) "auto-aof-rewrite-min-size"
 24) "67108864"
 25) "hash-max-ziplist-entries"
 26) "512"
 27) "hash-max-ziplist-value"
 28) "64"
 29) "list-max-ziplist-entries"
 30) "512"
 31) "list-max-ziplist-value"
 32) "64"
 33) "set-max-intset-entries"
 34) "512"
 35) "zset-max-ziplist-entries"
 36) "128"
 37) "zset-max-ziplist-value"
 38) "64"
 39) "hll-sparse-max-bytes"
 40) "3000"
 41) "lua-time-limit"
 42) "5000"
 43) "slowlog-log-slower-than"
 44) "10000"
 45) "latency-monitor-threshold"
 46) "0"
 47) "slowlog-max-len"
 48) "128"
 49) "port"
 50) "6379"
 51) "tcp-backlog"
 52) "511"
 53) "databases"
 54) "16"
 55) "repl-ping-slave-period"
 56) "10"
 57) "repl-timeout"
 58) "60"
 59) "repl-backlog-size"
 60) "1048576"
 61) "repl-backlog-ttl"
 62) "3600"
 63) "maxclients"
 64) "4064"
 65) "watchdog-period"
 66) "0"
 67) "slave-priority"
 68) "100"
 69) "min-slaves-to-write"
 70) "0"
 71) "min-slaves-max-lag"
 72) "10"
 73) "hz"
 74) "10"
 75) "no-appendfsync-on-rewrite"
 76) "no"
 77) "slave-serve-stale-data"
 78) "yes"
 79) "slave-read-only"
 80) "yes"
 81) "stop-writes-on-bgsave-error"
 82) "yes"
 83) "daemonize"
 84) "no"
 85) "rdbcompression"
 86) "yes"
 87) "rdbchecksum"
 88) "yes"
 89) "activerehashing"
 90) "yes"
 91) "repl-disable-tcp-nodelay"
 92) "no"
 93) "aof-rewrite-incremental-fsync"
 94) "yes"
 95) "appendonly"
 96) "no"
 97) "dir"
 98) "/home/deepak/Downloads/redis-2.8.13/src"
 99) "maxmemory-policy"
100) "volatile-lru"
101) "appendfsync"
102) "everysec"
103) "save"
104) "3600 1 300 100 60 10000"
105) "loglevel"
106) "notice"
107) "client-output-buffer-limit"
108) "normal 0 0 0 slave 268435456 67108864 60 pubsub 33554432 8388608 60"
109) "unixsocketperm"
110) "0"
111) "slaveof"
112) ""
113) "notify-keyspace-events"
114) ""
115) "bind"
116) ""

設定の編集

redis.conf ファイルを変更するか、次を使用CONFIG setコマンドで設定を変更できます。

構文

CONFIG SETコマンドの基本構文:

redis 127.0.0.1:6379> CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE

例

redis 127.0.0.1:6379> CONFIG SET loglevel "notice"
OK
redis 127.0.0.1:6379> CONFIG GET loglevel

1) "loglevel"
2) "notice"

パラメータの説明

redis.conf の設定項目の説明は次のとおりです:

番号設定項目説明
1
daemonize no
Redis はデフォルトではデーモンプロセスとして実行されません。この設定項目で変更でき、yes を使用するとデーモンプロセスを有効にできます(Windows はデーモンスレッドをサポートしていないため、設定は no です)
2
pidfile /var/run/redis.pid
Redis をデーモンプロセスとして実行する場合、Redis はデフォルトで pid を /var/run/redis.pid ファイルに書き込みます。pidfile で指定できます
3
port 6379
Redis のリッスンポートを指定します。デフォルトポートは 6379 です。作者は自身のブログ記事で、なぜ 6379 をデフォルトポートに選んだかを説明しています。6379 は携帯電話のキーで MERZ に対応する番号であり、MERZ はイタリアの歌手 Alessia Merz の名前に由来するからです
4
bind 127.0.0.1
バインドするホストアドレス
5
timeout 300
クライアントがアイドル状態になってから何秒後に接続を閉じるかを指定します。0 を指定した場合は、この機能を無効にします
6
loglevel notice
ログ記録レベルを指定します。Redis は debug、verbose、notice、warning の4つのレベルをサポートしており、デフォルトは notice です
7
logfile stdout
ログの記録方法はデフォルトで標準出力です。Redis をデーモンプロセスとして実行するように設定し、さらにここでログの記録方法を標準出力に設定した場合、ログは /dev/null に送信されます
8
databases 16
データベースの数を設定します。デフォルトのデータベースは 0 で、SELECTコマンドを使用して接続上でデータベースIDを指定できます
9
save <seconds> <changes>

Redis のデフォルト設定ファイルには3つの条件が用意されています:

save 900 1

save 300 10

save 60 10000

それぞれ、900秒(15分)以内に1回の変更、300秒(5分)以内に10回の変更、60秒以内に10000回の変更を表します。

どのくらいの時間内に何回の更新操作があればデータをデータファイルに同期するかを指定します。複数の条件を組み合わせることができます
10
rdbcompression yes
ローカルデータベースに保存する際にデータを圧縮するかどうかを指定します。デフォルトは yes で、Redis は LZF 圧縮を採用しています。CPU 時間を節約するためにこのオプションを無効にすることもできますが、データベースファイルが巨大になります
11
dbfilename dump.rdb
ローカルデータベースのファイル名を指定します。デフォルト値は dump.rdb です
12
dir ./
ローカルデータベースの保存ディレクトリを指定します
13
slaveof <masterip> <masterport>
このマシンがスレーブサービスの場合、マスターサービスのIPアドレスとポートを設定します。Redis の起動時に、自動的にマスターからデータを同期します
14
masterauth <master-password>
master サービスがパスワード保護を設定している場合、slave サービスが master に接続するためのパスワードです
15
requirepass foobared
Redis 接続パスワードを設定します。接続パスワードを設定した場合、クライアントは Redis に接続する際に AUTH <password> コマンドでパスワードを提供する必要があります。デフォルトでは無効です
16
 maxclients 128
同時に接続できる最大クライアント数を設定します。デフォルトは無制限です。Redis が同時に開くことができるクライアント接続数は、Redis プロセスが開くことができる最大ファイルディスクリプタ数です。maxclients 0 を設定した場合は制限なしを意味します。クライアント接続数が制限に達すると、Redis は新しい接続を閉じ、クライアントに max number of clients reached エラーメッセージを返します
17
maxmemory <bytes>
Redis の最大メモリ制限を指定します。Redis は起動時にデータをメモリに読み込みます。最大メモリに達すると、Redis は最初に期限切れまたは期限が近い Key を削除しようとします。この方法で処理した後でも最大メモリ設定に達している場合、書き込み操作はできなくなりますが、読み取り操作は引き続き可能です。Redis の新しい vm メカニズムでは、Key はメモリに保存され、Value は swap 領域に保存されます
18
appendonly no
更新操作のたびにログ記録を行うかどうかを指定します。Redis はデフォルトでは非同期でデータをディスクに書き込みます。これを有効にしない場合、停電時に一定期間のデータが失われる可能性があります。Redis 自体はデータファイルを上記の save 条件に従って同期するため、一部のデータは一定期間メモリにのみ存在することになります。デフォルトは no です
19
appendfilename appendonly.aof
更新ログのファイル名を指定します。デフォルトは appendonly.aof です
20
appendfsync everysec

更新ログの条件を指定します。選択可能な値は3つあります:

  • no:オペレーティングシステムによるデータキャッシュのディスクへの同期を待つことを示します(高速)
  • always:更新操作のたびに手動で fsync() を呼び出してデータをディスクに書き込むことを示します(低速、安全)
  • everysec:毎秒1回同期することを示します(妥協案、デフォルト値)
21
vm-enabled no
仮想メモリメカニズムを有効にするかどうかを指定します。デフォルト値は no です。簡単に説明すると、VM メカニズムはデータをページ単位で格納し、Redis がアクセスが少ないページ、つまりコールドデータをディスクに swap します。アクセスが多いページはディスクから自動的にメモリにスワップインされます(後の記事で Redis の VM メカニズムを詳しく分析します)
22
vm-swap-file /tmp/redis.swap
仮想メモリファイルのパス。デフォルト値は /tmp/redis.swap で、複数の Redis インスタンスで共有することはできません
23
vm-max-memory 0
vm-max-memory より大きいすべてのデータを仮想メモリに格納します。vm-max-memory がどれだけ小さく設定されていても、すべてのインデックスデータはメモリに格納されます(Redis のインデックスデータは keys です)。つまり、vm-max-memory が 0 に設定されている場合、実際にはすべての value がディスクに存在することになります。デフォルト値は 0 です
24
vm-page-size 32
Redis の swap ファイルは多くの page に分割されています。1つのオブジェクトは複数の page に保存できますが、1つの page を複数のオブジェクトで共有することはできません。vm-page-size は保存するデータのサイズに基づいて設定する必要があります。著者は、多数の小さなオブジェクトを保存する場合は page サイズを 32 または 64 bytes に設定することを推奨します。大きなオブジェクトを保存する場合はより大きな page を使用できます。不明な場合はデフォルト値を使用します
25
vm-pages 134217728
swap ファイル内の page 数を設定します。ページテーブル(ページの空き状況または使用状況を示す bitmap)はメモリ内に配置されるため、ディスク上で8ページごとに1バイトのメモリを消費します
26
vm-max-threads 4
swap ファイルにアクセスするスレッド数を設定します。マシンのコア数を超えないようにするのが最善です。0 に設定すると、swap ファイルに対するすべての操作が直列化され、比較的長時間の遅延が発生する可能性があります。デフォルト値は 4 です。。
27
glueoutputbuf yes
クライアントに応答する際に、小さなパケットを1つのパケットに結合して送信するかどうかを設定します。デフォルトでは有効です
28
hash-max-zipmap-entries 64
hash-max-zipmap-value 512
一定の数量を超えた場合、または最大要素がある臨界値を超えた場合に、特別なハッシュアルゴリズムを採用することを指定します
29
activerehashing yes
ハッシュのリセットを有効にするかどうかを指定します。デフォルトでは有効です(後で Redis のハッシュアルゴリズムを紹介する際に詳しく説明します)
30
include /path/to/local.conf
他の設定ファイルを包含することを指定します。同じホスト上の複数の Redis インスタンス間で同じ設定ファイルを使用しつつ、各インスタンスが独自の特定の設定ファイルを持つことができます
その他の拡張