Redis学習ノート---Redis 5.0.5プロファイルの詳細
4、解析プロファイル(redis 5.0.5)
プロファイルは${PATH}/redis.conf
4.1、記憶
4.2、外部プロファイルの導入(INCLUDES)
4.3、モジュールロード(MODULES)
4.4、ネットワーク(NETWORK)
4.4.1.redisが実行するホストIPを受け入れる
4.4.2、保護モードをオンにするかどうか
4.4.3、ポート
4.4.4、TCP接続で完了したキュー
4.4.5、ローカルの傍受をサポートする
4.4.6、unixsocketファイルを使用する権限
4.4.7、接続タイムアウト
4.4.8、tcp keepaliveパラメータ
4.5、基本構成(GENERAL)
4.5.1、バックグラウンド起動
4.5.2.upstartとsystemdによるRedisデーモンの管理
4.5.3、PID保存ファイルパス
4.5.4、ログレベル
4.5.5、ログファイル
4.5.6、記録syslog機能
4.5.7、syslog識別子
4.5.8、ログのソース
4.5.9、データベースの数
4.5.10、logoをずっと表示するか
4.6、データ持続化RDB(SNAPSHOTTING)
4.6.1、データをディスクに保存する
4.6.2、持続化エラーが発生して仕事を続けるかどうか
4.6.3、rdbファイルを検査するかどうか
4.6.4、圧縮rdbファイルの使用
4.6.5、rdbファイル名
4.6.6、rdb上記の「dbfilename構成命令のファイル名を使用してこのディレクトリに保存する
4.7、主従複製
4.7.1、主ノードの指定
4.7.2、マスターのパスワード
4.7.3、slaveの行為
4.7.4、構成は読取り専用かどうか
4.7.5、同期ポリシー
4.7.6、同期遅延時間
4.7.7、slaveは指定した時間間隔に従ってmasterにping要求を送信する
4.7.8、同期のタイムアウト時間
4.7.9、slaveソケットがSYNCを送信した後にTCPを無効にするかどうかNODELAY
4.7.10、データバックアップのbacklogサイズを設定する
4.7.11、最後のslaveが切断されてから数秒計時を開始すると、backlogバッファが解放されます.
4.7.12、優先度
4.7.13、書き込みの受信を停止する
4.8、安全(SECURITY)
4.8.1、パスワード
4.8.2、コマンドの名前変更
4.9、制限
4.9.1、同時接続数
4.9.2、メモリ制限
4.9.3、LRU及び最小TTLアルゴリズムのサンプル数
4.10、怠惰削除
4.10.1、メモリフル排出
4.10.2、期限切れkey削除
4.10.3、内部削除
4.10.4、RDBファイルを受信した後、データのクリアオプション
4.11、持続化方式AOF
4.11.1、起動するたびにRedisはまずこのファイルのデータをメモリに読み込み、まずRDBファイルを無視する
4.11.2、AOFファイル名
4.11.3、fsync()システム呼び出し
4.11.4、AOFの同期ポリシーが「always」または「everysec」に設定されている場合
4.11.5、AOFファイルの自動書き換え
4.11.6、AOFメモリへのロード
4.11.7、ロード時の設定
4.12、Luaスクリプト構成
4.13、クラスター
4.13.1、redisクラスタを開く
4.13.2.redisが自動的に生成するクラスタプロファイル名を構成する
4.13.3、クラスタノードタイムアウトミリ秒数
4.13.4、データが古い場合
4.13.5、マスター数の設定
4.13.6、クエリーデータの停止
4.13.7、replicasがマスターの故障中にmasterの故障転送を試みることを阻止する
4.14、Dockerクラスタ構成
4.15、遅い照会ログ
4.16、遅延監視システム
4.17、事件通知
4.18、内部データ構造
4.19、破片の整理
プロファイルは${PATH}/redis.conf
4.1、記憶
# , , 1k 5gb 4m :
#1k => 1000 bytes
#1kb => 1024 bytes
#1m => 1000000 bytes
#1mb => 10241024 bytes
#1g => 1000000000 bytes
#1gb => 10241024*1024 bytes
4.2、外部プロファイルの導入(INCLUDES)
#
# include /path/to/local.conf
# include /path/to/other.conf
4.3、モジュールロード(MODULES)
#
#loadmodule /path/to/my_module.so
#loadmodule /path/to/other_module.so
4.4、ネットワーク(NETWORK)
4.4.1.redisが実行するホストIPを受け入れる
# redis IP ,
bind 127.0.0.1
4.4.2、保護モードをオンにするかどうか
# 。 bind ,redis , 。
protected-mode yes
4.4.3、ポート
# ,
port 6379
4.4.4、TCP接続で完了したキュー
#TCP ( )
#backlog ,backlog = + 。
# backlog 。
tcp-backlog 511
4.4.5、ローカルの傍受をサポートする
# unix socket redis 。
#unixsocket /tmp/redis.sock
4.4.6、unixsocketファイルを使用する権限
# unix socket
#unixsocketperm 700
4.4.7、接続タイムアウト
# timeout , 0 (0 , )
timeout 0
4.4.8、tcp keepaliveパラメータ
#tcp keepalive
# , 0, keepalive , 60
tcp-keepalive 300
4.5、基本構成(GENERAL)
4.5.1、バックグラウンド起動
#
daemonize no
4.5.2.upstartとsystemdによるRedisデーモンの管理
# upstart systemd Redis
# :
#supervised no -
#supervised upstart - Redis SIGSTOP
#supervised systemd - signal systemd READY = 1 $ NOTIFY_SOCKET
#supervised auto - upstart systemd UPSTART_JOB NOTIFY_SOCKET
supervised no
4.5.3、PID保存ファイルパス
# PID
pidfile /var/run/redis_6379.pid
4.5.4、ログレベル
#
# :
# debug
# verbose
# notice
# warning
loglevel notice
4.5.5、ログファイル
#
logfile “”
4.5.6、記録syslog機能
# syslog
#syslog-enabled no
4.5.7、syslog識別子
#syslog
#syslog-ident redis
4.5.8、ログのソース
#
#syslog-facility local0
4.5.9、データベースの数
# , DB 0
# ”SELECT “ db
# DB 0
databases 16
4.5.10、logoをずっと表示するか
# logo
always-show-logo yes
4.6、データ持続化RDB(SNAPSHOTTING)
4.6.1、データをディスクに保存する
# :
#
# , :
#900 (15 ) ,
#300 (5 ) , 10
#60 , 10000
# : “save” save。
# save, save , :
#save ""
save 900 1
save 300 10
save 60 10000
4.6.2、持続化エラーが発生して仕事を続けるかどうか
# ,
stop-writes-on-bgsave-error yes
4.6.3、rdbファイルを検査するかどうか
# rdb
rdbcompression yes
4.6.4、圧縮rdbファイルの使用
# rdb ,rdb LZF ,
rdbchecksum yes
4.6.5、rdbファイル名
#rdb
dbfilename dump.rdb
4.6.6、rdb上記の「dbfilename構成命令のファイル名を使用してこのディレクトリに保存する
#rdb “dbfilename
dir ./
4.7、主従複製
4.7.1、主ノードの指定
# - 。 replicaof Redis Redis 。
# Redis , 。
#
# +------------------+ +---------------+
# | | ---> | |
# | ( ) | | ( ) |
# +------------------+ +---------------+
#
# 1) Redis , master to
# , 。
# 2) Redis master
# 。 ( ) , 。
# 3) , 。 。
#
# replicaof
4.7.2、マスターのパスワード
#master
#masterauth
4.7.3、slaveの行為
# slave master , ,slave :
# replica-serve-stale-data “yes” ( ),slave , , 。
# replica-serve-stale-data “no”,slave " master (SYNC with master in progress)" , INFO SLAVEOF 。
replica-serve-stale-data yes
4.7.4、構成は読取り専用かどうか
# , , :slave-read-only yes
replica-read-only yes
4.7.5、同期ポリシー
# : socket,
repl-diskless-sync no
4.7.6、同期遅延時間
# , , master socket RDB slave。
# 5 , 0 。
repl-diskless-sync-delay 5
4.7.7、slaveは指定した時間間隔に従ってmasterにping要求を送信する
#slave master ping 。 10 。
#repl-ping-replica-period 10
4.7.8、同期のタイムアウト時間
#
#slave master SYNC ,
# slave ,master , 、ping
# master ,slave , master REPLCONF ACK pings# repl-ping-slave-period,
#repl-timeout 60
4.7.9、slaveソケットがSYNCを送信した後にTCPを無効にするかどうかNODELAY
# slave SYNC TCP_NODELAY
# yes,Redis TCP slaves 。 slave ,Linux 40 。
# no, salve 。
# , , “yes”。
repl-disable-tcp-nodelay no
4.7.10、データバックアップのbacklogサイズを設定する
# backlog
#repl-backlog-size 1mb
4.7.11、最後のslaveが切断されてから数秒計時を開始すると、backlogバッファが解放されます.
# slave ,backlog 。
#repl-backlog-ttl 3600
4.7.12、優先度
#
replica-priority 100
4.7.13、書き込みの受信を停止する
# master N M slave, 。
#N slave “oneline” 。
# , , slave ping( ) 。
# N slave , 。
# 3 10 slave :
#min-replicas-to-write 3
#min-replicas-max-lag 10
4.8、安全(SECURITY)
4.8.1、パスワード
#
#requirepass foobared
4.8.2、コマンドの名前変更
#
#
#rename-command CONFIG “”
4.9、制限
4.9.1、同時接続数
#
#maxclients 10000
4.9.2、メモリ制限
#
#maxmemory
# ,Redis key
#volatile-lru -> LRU key
#allkeys-lru -> LRU key
#volatile-random -> key
#allkeys-random -> key
#volatile-ttl -> key(minor TTL)
#noeviction -> key,
# : , Redis key 。
# :set setnx setex append incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby getset mset msetnx exec sort
#maxmemory-policy noeviction
4.9.3、LRU及び最小TTLアルゴリズムのサンプル数
#LRU TTL
#maxmemory-samples 5
4.10、怠惰削除
4.10.1、メモリフル排出
#
lazyfree-lazy-eviction no
4.10.2、期限切れkey削除
# key
lazyfree-lazy-expire no
4.10.3、内部削除
# , rename oldkey newkey , newkey newkey
lazyfree-lazy-server-del no
4.10.4、RDBファイルを受信した後、データのクリアオプション
# RDB
replica-lazy-flush no
4.11、持続化方式AOF
4.11.1、起動するたびにRedisはまずこのファイルのデータをメモリに読み込み、まずRDBファイルを無視する
# Redis , RDB
appendonly no
4.11.2、AOFファイル名
#AOF
appendfilename “appendonly.aof”
4.11.3、fsync()システム呼び出し
#fsync() , 。
# ; 。
#Redis :
#no: , 。 。
#always: aof 。 , 。
#everysec: 。 。
# “everysec” 。
appendfsync everysec
4.11.4、AOFの同期ポリシーが「always」または「everysec」に設定されている場合
# AOF “always” “everysec”, ( AOF ) I/O 。 Linux Redis fsync() 。
# , , fsync() write(2) 。
# , 。 BGSAVE BGREWRITEAOF fsync()。
# , Redis " " 。
# , 30 。( Linux )
# "yes" , "no", 。
no-appendfsync-on-rewrite no
4.11.5、AOFファイルの自動書き換え
# AOF 。 AOF ,Redis BGREWRITEAOF AOF 。
# :Redis AOF ( , AOF )
# 。 , 。
# , 。
# 0 AOF 。
auto-aof-rewrite-percentage 100
#
auto-aof-rewrite-min-size 64mb
4.11.6、AOFメモリへのロード
# yes, AOF redis ,redis
# no,erdis 。 "redis-check-aof" 。
aof-load-truncated yes
4.11.7、ロード時の設定
# Redis AOF “REDIS” ,
# RDB , AOF
aof-use-rdb-preamble yes
4.12、Luaスクリプト構成
#Lua
lua-time-limit 5000
4.13、クラスター
4.13.1、redisクラスタを開く
# redis
#cluster-enabled yes
4.13.2.redisが自動的に生成するクラスタプロファイル名を構成する
# redis 。 redis 。
#cluster-config-file nodes-6379.conf
4.13.3、クラスタノードタイムアウトミリ秒数
#
#cluster-node-timeout 15000
4.13.4、データが古い場合
# , master slave master。 slave master :(node-timeout * slave-validity-factor) + repl-ping-slave-period master。
# node-timeout 30 ,slave-validity-factor 10, default repl-ping-slave-period 10 , 310 slave master。
# slave-validity-factor slave master, master。
# , 0, slave master master
#cluster-replica-validity-factor 10
4.13.5、マスター数の設定
# master slave ,slave master。 1( 3 ,1 master+2 slaves,master , 1 slave 1 slave )
# 0, 1
#cluster-migration-barrier 1
4.13.6、クエリーデータの停止
# redis 1 hash slot , 。
# slot 。
# , no。
#cluster-require-full-coverage yes
4.13.7、replicasがマスターの故障中にmasterの故障転送を試みることを阻止する
# yes , replicas master
# ,master , 。
#cluster-replica-no-failover no
4.14、Dockerクラスタ構成
# ,Redis IP PORT, 。
# Docker , host , IP PORT , IP PORT 。
# ,Redis IP PORT 。 IP PORT Docker IP PORT 。
#cluster-announce-ip
#cluster-announce-port
#
#cluster-announce-bus-port
4.15、遅い照会ログ
#
#1000000 1 , 0
slowlog-log-slower-than 10000
# , SLOWLOG RESET
slowlog-max-len 128
4.16、遅延監視システム
# ( ) , 0
latency-monitor-threshold 0
4.17、事件通知
#Redis Pub/Sub ,
notify-keyspace-events “”
4.18、内部データ構造
# hash entry , entry ,
# 。
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
# , quicklist ziplist 。 ,
# 5 , quicklist ziplist 5 。
# , quicklist ziplist 。 , -1 -5
# , :
#-5: quicklist ziplist 64 Kb。( :1kb => 1024 bytes)
#-4: quicklist ziplist 32 Kb。
#-3: quicklist ziplist 16 Kb。
#-2: quicklist ziplist 8 Kb。(-2 Redis )
#-1: quicklist ziplist 4 Kb。
list-max-ziplist-size -2
# quicklist 。
# : quicklist , ziplist 。
# , quicklist ziplist, , 。
# list-compress-depth :
#0: , 。 Redis 。
#1: quicklist 1 , 。
#2: quicklist 2 , 。
#3: quicklist 3 , 。
# …
# 0 , quicklist , 。
list-compress-depth 0
#set : set 64 。
# set 。
set-max-intset-entries 512
# hash list , 。
#
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
#HyperLogLog 。
#16 。 HyperLogLog
# , 。
# 16000 ,
# 。
# 3000 , ,
hll-sparse-max-bytes 3000
#Streams / 。 。
# ,
# 。 0, ,
# max-bytes 0, max-entries
stream-node-max-bytes 4096
stream-node-max-entries 100
# , 100 CPU 1 Redis ( )
activerehashing yes
# ,
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
# 。 ,
#
# , , , 。
#client-query-buffer-limit 1gb
# Redis , , strings, 512 MB。
# , z
#proto-max-bulk-len 512mb
# ,“hz” 10。 Redis CPU , key
# Redis ,
hz 10
# hz
dynamic-hz yes
# AOF , , 32M
aof-rewrite-incremental-fsync yes
# redis RDB , , 32 MB , fsync-ed。
# , 。
rdb-save-incremental-fsync yes
4.19、破片の整理
#
#activedefrag yes
#
#active-defrag-ignore-bytes 100mb
#
#active-defrag-threshold-lower 10
#
#active-defrag-threshold-upper 100
# CPU
#active-defrag-cycle-min 5
#
#active-defrag-cycle-max 75
# set / hash / zset / list
#active-defrag-max-scan-fields 1000