Redisシリーズ--2、Redis構成


1、Redis配置
Redisにプロファイル(redis.conf)がある場合は、Redisのルートディレクトリの下にあります.RedisのCONFIGコマンドですべてのRedisの構成を設定できます.
2、プロファイルの説明:
1.Redisのデフォルトはデーモンプロセスではありません.この構成項目を変更してyesを使用してデーモンプロセスを有効にすることができます.
    daemonize no
2.Redisがデーモン方式で実行する場合、Redisはデフォルトでpidを/var/run/redisに書き込む.pidファイル、pidfileで指定できます
    pidfile/var/run/redis.pid
3.Redisリスニングポートを指定し、デフォルトポートは6379で、著者は自分のブログで6379をデフォルトポートとして選んだ理由を説明した.6379は携帯電話のボタンにMERZ対応の番号があり、MERZはイタリアの歌姫Alessia Merzの名前から取ったからだ.
    port 6379
4.バインドされたホストアドレス
    bind 127.0.0.1
5.クライアントがアイドル状態になってから接続をオフにします.0を指定すると、この機能をオフにします.
    timeout 300
6.ログ・レコード・レベルを指定します.Redisでは、debug、verbose、notice、warningの4つのレベルがサポートされています.デフォルトはverboseです.
    loglevel verbose
7.ログ記録方式、デフォルトは標準出力である.Redisがデーモン方式で実行され、ここでログ記録方式が標準出力であるように構成されている場合、ログは/dev/nullに送信される
    logfile stdout
8.データベースの数を設定し、デフォルトのデータベースは0であり、SELECTコマンドを使用して接続上のデータベースidを指定することができる.
    databases 16
9.どのくらいの時間内に、何回更新操作があるかを指定し、データをデータファイルに同期し、複数の条件を合わせることができる
    save
Redisのデフォルトプロファイルには、次の3つの条件があります.
    save 900 1
    save 300 10
    save 60 10000
それぞれ900秒(15分)に1つの変更があり、300秒(5分)に10つの変更があり、60秒に10000の変更があることを示します.
 
10.ローカル・データベースに格納するときにデータを圧縮するかどうかを指定します.デフォルトはyesです.RedisはLZF圧縮を採用しています.CPUの時間を節約するために、このオプションをオフにすることができますが、データベース・ファイルが大きくなります.
    rdbcompression yes
11.ローカルデータベースのファイル名を指定します.デフォルトはdumpです.rdb
    dbfilename dump.rdb
12.ローカル・データベースの保管ディレクトリの指定
    dir ./
13.本機がslavサービスである場合、マスターサービスのIPアドレスとポートを設定し、Redis起動時に自動的にマスターからデータ同期を行う
    slaveof
14.masterサービスがパスワード保護を設定した場合、slavサービスはmasterのパスワードに接続する
    masterauth
15.Redis接続パスワードを設定し、接続パスワードを設定した場合、クライアントはRedis接続時にAUTHコマンドでパスワードを提供する必要があり、デフォルトで閉じる
    requirepass foobared
16.同一時間の最大クライアント接続数を設定し、デフォルトは無制限であり、Redisが同時に開くことができるクライアント接続数はRedisプロセスが開くことができる最大ファイル記述子数であり、maxclients 0を設定すると制限しないことを示す.クライアント接続数が制限に達すると、Redisは新しい接続を閉じ、max number of clients reachedエラーメッセージをクライアントに返します.
    maxclients 128
17.Redisの最大メモリ制限を指定します.Redisは起動時にメモリにデータをロードします.最大メモリに達すると、Redisは期限切れまたは期限切れになるKeyをクリアしようとします.このメソッドの処理後も最大メモリ設定に達し、書き込み操作はできませんが、読み取り操作はできます.Redisの新しいvmメカニズムは、Keyをメモリに保存し、Valueはswap領域に保存します.
    maxmemory
18.更新操作のたびにログを記録するかどうかを指定します.Redisはデフォルトでは非同期でディスクにデータを書き込みます.オンにしないと、電源が切れたときにしばらくの間データが失われる可能性があります.redis自体の同期データファイルは上記save条件で同期されるため、一定期間メモリにしか存在しないデータもあります.デフォルトはno
    appendonly no
19.更新ログファイル名を指定します.デフォルトはappendonlyです.aof
     appendfilename appendonly.aof
20.更新ログ条件を指定します.3つのオプション値があります.no:オペレーティングシステムがデータキャッシュをディスクに同期することを示します(速い)always:更新操作のたびにfsync()を手動で呼び出してディスクにデータを書き込むことを示します(遅い、安全な)everysec:毎秒同期することを示します(トレードオフ、デフォルト)
    appendfsync everysec
 
21.仮想メモリメカニズムを有効にするかどうかを指定し、デフォルト値はnoである.簡単に説明すると、VMメカニズムはデータをページごとに保存し、Redisによってアクセス量の少ないページであるコールドデータswapをディスクに、アクセスの多いページはディスクによって自動的にメモリに取り替える(後述するRedisのVMメカニズムを詳しく分析する)
     vm-enabled no
22.仮想メモリファイルパス、デフォルトは/tmp/redis.swap、複数のRedisインスタンス共有不可
     vm-swap-file/tmp/redis.swap
23.vm-max-memoryより大きいすべてのデータを仮想メモリに格納します.vm-max-memoryの設定がどんなに小さくても、すべてのインデックスデータはメモリに格納されます(Redisのインデックスデータはkeysです).つまり、vm-max-memoryが0に設定されている場合、実際にはすべてのvalueがディスクに存在します.既定値は0
     vm-max-memory 0
24.Redis swapファイルは多くのpageに分かれており、1つのオブジェクトは複数のpageの上に保存できるが、1つのpageでは複数のオブジェクトに共有されてはいけない.vm-page-sizeは格納されたデータサイズに応じて設定される.著者らは、多くの小さなオブジェクトを格納する場合、pageサイズは32または64 bytesに設定することを提案する.大きなオブジェクトを格納する場合は、より大きなpageを使用し、不確定な場合はデフォルト値を使用します.
     vm-page-size 32
25.swapファイルのpage数を設定します.ページテーブル(ページの空きや使用を示すbitmap)がメモリに格納されているため、ディスク上で8つのpagesごとに1 byteのメモリが消費されます.
     vm-pages 134217728
26.swapファイルにアクセスするスレッド数を設定します.マシンのコア数を超えないほうがいいです.0に設定すると、swapファイルに対する操作はすべてシリアルで、比較的長い遅延をもたらす可能性があります.既定値は4
     vm-max-threads 4
27.クライアントへの応答時に、より小さなパケットを1つのパケットに統合して送信するか、デフォルトでオンに設定
    glueoutputbuf yes
28.一定の数または最大の要素がある臨界値を超える場合に、特殊なハッシュアルゴリズムを採用することを指定する
    hash-max-zipmap-entries 64
    hash-max-zipmap-value 512
29.リセットハッシュをアクティブ化するかどうかを指定し、デフォルトでオンにします(Redisのハッシュアルゴリズムについては後述します)
    activerehashing yes
30.同じホスト上の複数のRedisインスタンス間で同じプロファイルを使用しながら、各インスタンスが独自の特定のプロファイルを持つ他のプロファイルを含むことを指定します.
    include/path/to/local.conf
3、文法
RedisのCONFIGコマンドの基本構文は次のとおりです.
redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME

たとえば
redis 127.0.0.1:6379> CONFIG GET loglevel1) "loglevel"
2) "notice"

すべての構成をCONFIGの代わりに*を使用します.SETTING_NAME
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) ""

4、構成の編集
構成を更新するにはredisを直接編集できます.confファイルまたは構成の更新、CONFIGsetコマンドによる
構文
CONFIGSETコマンドの基本構文は次のとおりです.
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"