10分クイックスタートRedis


ここで修正を更新し続けます.私は使用中に、いくつかの問題を記録します.
Redisインストール
公式コンパイルインストール
$ wget http://download.redis.io/releases/redis-4.0.0.tar.gz
$ tar xzvf redis-4.0.0.tar.gz -C /usr/local/
$ cd /usr/local/redis-4.0.0
$ make
$ make test
$ make install 
#        :
# mkdir -p /usr/local/bin
# cp -pf redis-server /usr/local/bin
# cp -pf redis-benchmark /usr/local/bin
# cp -pf redis-cli /usr/local/bin
# cp -pf redis-check-dump /usr/local/bin
# cp -pf redis-check-aof /usr/local/bin

テストmake testエラー
$ make test
You need tcl 8.5 or newer in order to run the Redis test
make: *** [test] Error 1

これはtclを取り付ける必要があります
wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz  
sudo tar xzvf tcl8.6.1-src.tar.gz  -C /usr/local/  
cd  /usr/local/tcl8.6.1/unix/  
sudo ./configure  
sudo make  
sudo make install   

EPELソースでインストール
ソースインストールの問題は、最新のインストールができないか、Redisバージョンを指定できないことです.
yum --enablerepo=epel -y install redis

ソースがインストールされていない場合は、次の方法でソースをインストールします.
cd /etc/yum.repos.d/
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

Redisのアップグレード
まず、次のrepos、EPEL、REMIがインストールされていることを確認します.
sudo rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
sudo rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-6.rpm
--enablerepo=epelパラメータを使用して、指定したソースのRedisバージョンを表示し、REMI repoのRedisバージョンを確認します.
yum --enablerepo=epel info redis
# Loaded plugins: fastestmirror
# Loading mirror speeds from cached hostfile
#  * base: centos.ustc.edu.cn
#  * epel: mirrors.tuna.tsinghua.edu.cn
#  * extras: centos.ustc.edu.cn
#  * updates: mirrors.zju.edu.cn
# Available Packages
# Name        : redis
# Arch        : x86_64
# Version     : 2.4.10
# Release     : 1.el6
# Size        : 213 k
# Repo        : epel/x86_64
# Summary     : A persistent key-value database
# URL         : http://redis.io
# License     : BSD
# Description : Redis is an advanced key-value store. It is similar to memcached but the data
#             : set is not volatile, and values can be strings, exactly like in memcached, but
#             : also lists, sets, and ordered sets. All this data types can be manipulated with
#             : atomic operations to push/pop elements, add/remove elements, perform server
#             : side union, intersection, difference between sets, and so forth. Redis supports
#             : different kind of sorting abilities.

次に、EPEL repoから関連する依存関係(jemalloc):
yum --enablerepo=epel install jemalloc

インストールする前に、古いRedisデーモンを停止する必要があります.
service redis stop

次に、更新されたバージョンのRedisをインストールします.
sudo yum --enablerepo=remi install redis

サービス管理
Redisデーモンを再起動し、再起動させると自動的に起動します.
sudo service redis start
sudo chkconfig redis on

基本サービス操作
##        
$ redis-server & nohup
##      
$ redis-cli ping
##     
$ redis-cli shutdown

#         
$ redis-cli start
#   
$ service redis start
#   
$ service redis stop

#         
$ redis-cli -p 6380

#         
$ redis-server --port 6380 &

バージョンの表示
現在インストールされているRedisバージョンを確認します.
#    Redis   
$ redis-cli info | grep redis_version

#      
$ redis-cli info | grep tcp_port

起動
Redisインストールディレクトリには/usr/local/redis-4.0.0/utilsというディレクトリがあります.このディレクトリにはredis_init_scriptというスクリプトがあります.このスクリプトを/etc/init.dというディレクトリにコピーし、redisと名付けます.
cp /usr/local/redis-4.0.0/utils/redis_init_script /etc/init.d/redis
redis.confファイルを/etc/redisディレクトリにコピーします.
cp /usr/local/redis-4.0.0/redis.conf /etc/redis/6380.conf

プロファイル6380.confはいくつかの場所を変更する必要があります
#        ,yes:    ;no:      (     )
daemonize yes

権限を変更し、chkconfigコマンドでシステムredisサービスをチェック、設定して開く
chmod +x /etc/init.d/redis
chkconfig redis on

次の2行の注釈を/etc/init.d/redisファイルのヘッダに配置し、サポートされていないプロンプトservice redis does not support chkconfigを設定しないでください.
# chkconfig:   2345 90 10
# description:  redis is a persistent key-value database

上記の注記は、redisサービスは、実行レベル2、3、4、5で起動または停止されなければならないことを意味し、起動の優先度は90であり、停止の優先度は10である.
Redis起動警告エラー解決
  • WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to/etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
  • echo "vm.overcommit_memory=1" > /etc/sysctl.conf  #   vi /etcsysctl.conf ,   reboot    
    echo 1 > /proc/sys/vm/overcommit_memory  #          
  • WARNING: The TCP backlog setting of 511 cannot be enforced because/proc/sys/net/core/somaxconn is set to the lower value of 128.
  • echo 511 > /proc/sys/net/core/somaxconn

    構成の変更
    Redisのプロファイルは、Redisインストールディレクトリの下にあり、ファイル名はredis.confです.デフォルトのRedisプロファイルはsudo vi /etc/redis.confここで編集できます
    sudo vi /etc/redis.conf

    コンフィギュレーション・アイテムはCONFIGコマンドで表示または設定できます.設定コマンドの設定
    ##   redis  
    127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME
    ##   redis  
    127.0.0.1:6379> CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE
    
    ##       
    127.0.0.1:6379> CONFIG GET *
    
    ##           
    $ redis-cli config set notify-keyspace-events KEA

    きほんそうさ
    ##         
    $ redis-cli
    
    #     
    127.0.0.1:6379> ping
    PONG
    
    #    mykey    
    127.0.0.1:6379> set mykey hello
    OK
    
    #    mykey    
    127.0.0.1:6379> get mykey
    "hello"
    
    ##    mykey     
    127.0.0.1:6379> expire mykey 2
    
    
    #     redis     
    127.0.0.1:6379> config get *
    
    #      key
    127.0.0.1:6379> keys *
    
    #   redis         Key
    127.0.0.1:6379> flushdb
    
    127.0.0.1:6379> config get dir
    
    #       key    
    127.0.0.1:6379> dbsize
    
    #          key
    127.0.0.1:6379> flushall
    
    #   
    127.0.0.1:6379> exit
    
    
    #      Redis      
    #                    ,
    #           ,
    #            (             )
    #          CONFIG RESETSTAT        ,                 。
    
    127.0.0.1:6379> commandstats
    cmdstat_get:calls=78,usec=608,usec_per_call=7.79
    cmdstat_setex:calls=5,usec=71,usec_per_call=14.20
    cmdstat_keys:calls=2,usec=42,usec_per_call=21.00
    cmdstat_info:calls=10,usec=1931,usec_per_call=193.10

    サポートされるデータ型
    文字列
    #       ,      redis.
    redis> SET name forezp
    OK
    #     :
    redis> get name 
    "forezp"

    Hashes-ハッシュ値
    redis > HMSET king username forezp password xxdxx age 22
    redis > HGETALL king
    1) "username"
    2) "forezp "
    3) "password "
    4) "xxdxx "
    5) "age "
    6) "22"

    Lists-リスト
    redis> lpush pricess kenny
    (integer) 1
    redis 127.0.0.1:6379> lpush pricess jolin
    (integer) 2
    redis 127.0.0.1:6379> lpush pricess mayun
    (integer) 3
    redis 127.0.0.1:6379> lrange pricess 0 10
    1) "kenny"
    2) "jolin"
    3) "mayun"

    ちくじしゅうごう
    redis > ZADD kindom 1 redis
    (integer) 1
    redis> ZADD kindom 2 mongodb
    (integer) 1
    redis > ZADD kindom 3 mysql
    (integer) 1
    redis > ZADD kindom 3 mysql
    (integer) 0
    redis > ZADD kindom 4 mysql
    (integer) 0
    redis > ZRANGE kindom 0 10 WITHSCORES
    1) "redis"
    2) "1"
    3) "mongodb"
    4) "2"
    5) "mysql"
    6) "4"

    通知を開く
    この特性でCPUの電力を消費するのは賢明ではないため、キースペースイベント通知はデフォルトで無効になっています.redis.confnotify-keyspace-eventsを使用するか、CONFIG SETを使用して通知を開きます.
    ##           
    $ redis-cli config set notify-keyspace-events KEA
    ##          
    $ redis-cli --csv psubscribe '__key*__:*'
    Reading messages... (press Ctrl-C to quit)
    "psubscribe","__key*__:*",1

    キー値の説明
    K     Keyspace events, published with __keyspace@__ prefix.  
    E     Keyevent events, published with __keyevent@__ prefix.  
    g     Generic commands (non-type specific) like DEL, EXPIRE, RENAME, ...  
    $     String commands  
    l     List commands  
    s     Set commands  
    h     Hash commands  
    z     Sorted set commands  
    x     Expired events (events generated every time a key expires)  
    e     Evicted events (events generated when a key is evicted for maxmemory)  
    A     Alias for g$lshzxe, so that the "AKE" string means all the events. 

    異なるコマンドによって生成されるイベント(Events generated by different commands)
    次のリストに従って、異なるコマンドは異なるタイプのイベントを生成します.Redis Keyspace Notifications
  • DELは、削除されたキーごとにdelイベントを生成する.
  • RENAMEは2つのイベントを生成し、ソースキーにrename_を生成する.fromイベント、ターゲットキーにrenameを生成toイベント.
  • EXPIREキーの有効期限が設定されているときにexpireイベントが発生するか、有効期限が設定されているキーが削除されるたびにexpiredイベントが発生します(EXPIREドキュメントを参照して詳細を参照).
  • SORT STOREが新しいキーを設定するために使用されたときにsortstoreイベントが生成される.結果リストが空でSTOREオプションが使用され、すでに名前のキーが存在する場合、このキーは削除されるので、この条件下でdelイベントが発生するか、生成される.
  • SETおよびそのすべての変種(SETEX,SETNX,GETSET)はsetイベントを生成する.しかしSETEXではexpireイベントも発生します.
  • MSETは、キーごとに個別のsetイベントを生成する.
  • SETRANGEはsetrangeイベントを生成します.
  • INCR,DECR,INCRBY,DECRBYはいずれもincrbyイベントを発生する.
  • INCRBYFLOATはincrbyfloatイベントを生成する.
  • APPENDはappendイベントを生成する.
  • LPUSHおよびLPUSHXは、可変の場合であっても、単一のlpushイベントを生成する.
  • RPUSHおよびRPUSHXは、可変の場合であっても、単一のrpushイベントを生成する.
  • RPOPはrpopイベントを生成する.最後の要素がリストからポップアップされたためにキーが削除されると、delイベントが発生します.
  • LPOPはlpopイベントを生成します.最後の要素がリストからポップアップされたためにキーが削除されると、delイベントが発生します.
  • LINSERTはlinsertイベントを生成します.
  • LSETはlsetイベントを生成します.
  • LREMはlremイベントを生成します.結果リストが空でキーが削除されると、delイベントが生成されます.
  • LTRIMはltrimイベントを生成する.結果リストが空でキーが削除されると、delイベントが生成されます.
  • RPOPLPUSHおよびBRPOLPUSHは、rpopイベントおよびlpushイベントを生成する.どちらの場合も、結果リストの長さがゼロでキーが削除されると、delイベントが生成されることが保証されます(lpushイベントは常にrpopイベントの後に渡されます).
  • HSET、HSETNX、およびHMSETは、単一のhsetイベントを生成する.
  • HINCRBYはhincrbyイベントを生成します.
  • HINCRBYFLOATはhincrbyfloatイベントを生成する.
  • HDELは、単一のhdelイベントを生成する.結果ハッシュが空でキーが削除されると、delイベントが生成されます.
  • SADDは、可変の場合でも、単一のsaddイベントを生成する(even in the variadic case).
  • SREMは、単一のsremイベントを生成する.結果セットが空でキーが削除されると、delイベントが生成されます.
  • SMOVEは、ソースキーに対してsremイベントを生成し、ターゲットキーに対してsaddイベントを生成する.
  • SPOPはspopイベントを生成する.結果セットが空でキーが削除されると、delイベントが生成されます.
  • SINTERSTORE,SUIONSTORE,SDIFSTOREはそれぞれsinterstore,sunionostore,sdiffstoreイベントを生成する.特殊な場合、コレクションは空であり、結果を格納するキーはすでに存在し、キーが削除されるためdelイベントが発生します.
  • ZINCRはzincrイベントを生成します.
  • ZADDは、複数の要素が追加されても、単一のzaddイベントを生成する.
  • ZREMは、複数の要素が削除されても、単一のzremイベントを生成する.結果が整列した集合が空であり、キーが生成されると、追加のdelイベントが発生します.
  • ZREMBYSCOREは、単一のzrembyscoreイベントを生成する.結果が整列した集合が空であり、キーが生成されると、追加のdelイベントが発生します.
  • ZREMBYRANKは、単一のzrembyrankイベントを生成する.結果が整列した集合が空であり、キーが生成されると、追加のdelイベントが発生します.
  • ZINTERTOREとZUNIOnstorEは、それぞれzinterstoreイベントとzunionstoreイベントを生成します.特殊な場合、コレクションは空であり、結果を格納するキーはすでに存在し、キーが削除されるためdelイベントが発生します.
  • 生存イベントに関連付けられたキーが期限切れでデータセットから削除されるたびにexpiredイベントが発生する.
  • は、maxmemoryポリシーによってキーがデータセットから淘汰されてメモリを節約するたびにevictedイベントを生成する.

  • リモートログイン接続を有効にする
    netstatを使用してポートの使用状況を表示します.デフォルトのRedisポートは6379です.
    netstat -nlt|grep 6379
  • -t:TCPポート
  • を表示することを示す
  • -u:UDPポート
  • を表示することを示す
  • -l:リスニングソケット
  • のみ表示
  • -p:プロセス識別子とプログラム名が表示され、各ソケット/ポートはプログラムに属します.
  • -n:DNSポーリングを行わず、IP(アクセラレータ可能)
  • を表示する.
    ファイアウォール構成の変更
    ファイアウォール構成sudo vi/etc/sysconfig/iptablesの変更
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT

    プロファイルの変更
    Redis protected-modeは3.2以降に加わる新しい特性で、Redis.confの注釈では,彼の具体的な役割と有効化条件を知ることができる.sudo vi/etc/redis.confで編集し、プロファイルを変更します.
    # Protected mode is a layer of security protection, in order to avoid that
    # Redis instances left open on the internet are accessed and exploited.
    #
    # When protected mode is on and if:
    #
    # 1) The server is not binding explicitly to a set of addresses using the
    #    "bind" directive.
    # 2) No password is configured.
    #
    # The server only accepts connections from clients connecting from the
    # IPv4 and IPv6 loopback addresses 127.0.0.1 and ::1, and from Unix domain
    # sockets.
    #
    # By default protected mode is enabled. You should disable it only if
    # you are sure you want clients from other hosts to connect to Redis
    # even if no authentication is configured, nor a specific set of interfaces
    # are explicitly listed using the "bind" directive.
    protected-mode yes
    

    使用可能な条件は2つあります.
  • bind IP
  • なし
  • アクセスパスワードが設定されていません
  • 有効にすると、lookback ip(127.0.0.1)からのみRedis cacheにアクセスできます.外部ネットワークからアクセスすると、対応するエラーメッセージが返されます.
    (error) DENIED Redis is running in protected mode because protected mode is enabled, no bind address was specified, no authentication password is requested to clients. In this mode connections are only accepted from the lookback interface. If you want to connect from external computers to Redis you may adopt one of the following solutions: 1) Just disable protected mode sending the command 'CONFIG SET protected-mode no' from the loopback interface by connecting to Redis from the same host the server is running, however MAKE SURE Redis is not publicly accessible from internet if you do so. Use CONFIG REWRITE to make this change permanent. 2) Alternatively you can just disable the protected mode by editing the Redis configuration file, and setting the protected mode option to 'no', and then restarting the server. 3) If you started the server manually just for testing, restart it with the --portected-mode no option. 4) Setup a bind address or an authentication password. NOTE: You only need to do one of the above things in order for the server to start accepting connections from the outside.

    原生モニタリング
    現在のリンクのクライアント数と接続数redis-cli --stat現在接続されているクライアント数、接続数などを表示
    ------- data ------ --------------------- load -------------------- - child -
    keys       mem      clients blocked requests            connections
    4          1.27M    6       0       17340 (+0)          111
    4          1.27M    6       0       17341 (+1)          111
    4          1.27M    6       0       17342 (+1)          111
    4          1.27M    6       0       17343 (+1)          111

    メモリの最大キー値と平均キー値データredis-cli --bigkeysは、現在使用されているメモリの最大キー値と平均キー値のデータに対して、-iパラメータを指定したタイミングで現在のビューを表示することもできます.
    # Scanning the entire keyspace to find biggest keys as well as
    # average sizes per key type.  You can use -i 0.1 to sleep 0.1 sec
    # per 100 SCAN commands (not usually needed).
    
    [00.00%] Biggest string found so far 'asdf.js' with 3 bytes
    [00.00%] Biggest string found so far 'wabg-tokeneyJhbGciOiJIUzI1NiJ9.NA.UGGRiB2I42rP-33cIMrcoPub7AzHgDlqHacAKFw1pfE' with 328 bytes
    [00.00%] Biggest string found so far 'wabg-token-province' with 231042 bytes
    
    -------- summary -------
    
    Sampled 4 keys in the keyspace!
    Total key length in bytes is 180 (avg len 45.00)
    
    Biggest string found 'wabg-token-province' has 231042 bytes
    
    4 strings with 231819 bytes (100.00% of keys, avg size 57954.75)
    0 lists with 0 items (00.00% of keys, avg size 0.00)
    0 sets with 0 members (00.00% of keys, avg size 0.00)
    0 hashs with 0 fields (00.00% of keys, avg size 0.00)
    0 zsets with 0 members (00.00% of keys, avg size 0.00)

    現在のキー値の表示redis-cli --scanは、keys *と同様の機能を提供し、現在のキー値の状況を正則的に表すことができる.
    $ redis-cli --scan
    
    sess:K4xh-bxOBrcXpy9kEW87oiy-u7I2sAA5
    asdf.js
    sess:1tGNZSXW8GyoEQsbtpqkA5tMmSFp_ZIn
    wabg-tokeneyJhbGciOiJIUzI1NiJ9.NA.UGGRiB2I42rP-33cIMrcoPub7AzHgDlqHacAKFw1pfE
    sess:3e4NGIJd0wf1-RONeTt-FsXQj4EaVNjk
    wabg-token-province
    sess:UuCLAX2sWZ50fiIO1qvDgulf0XIZRd98
    wabg-tokeneyJhbGciOiJIUzI1NiJ9.MQ.6z44GClzAsUED1M_UyxqdREdDKcYFnL9tSqd5ZhLhsY
    sess:2HEchaRLYUoaa44IF1bB6mpik7lZjBb4

    原生モニタ
    redis-cli monitorは、すべてのseverが受信したコマンドと対応するクライアントアドレスを印刷します.
    $ redis-cli monitor
    OK
    1472626566.218175 [0 127.0.0.1:62862] "info"
    1472626571.220948 [0 127.0.0.1:62862] "exists" "aaa"
    1472626571.223174 [0 127.0.0.1:62862] "set" "aaa" ""
    1472626571.232126 [0 127.0.0.1:62862] "type" "aaa"
    1472626571.243697 [0 127.0.0.1:62862] "pttl" "aaa"
    1472626571.243717 [0 127.0.0.1:62862] "object" "ENCODING" "aaa"
    1472626571.243726 [0 127.0.0.1:62862] "strlen" "aaa"

    構成の説明
    #redis.conf
    # Redis configuration file example.
    # ./redis-server /path/to/redis.conf
    
    ################################## INCLUDES ###################################
    #              redis                。
    # include /path/to/local.conf
    # include /path/to/other.conf
    
    ################################ GENERAL #####################################
    
    #        ,yes:    ;no:      (     )
    daemonize yes
    
    # 3.2    ,        ,    。         bind   。
    #       ,redis        ,      。
    #            bind,    。         ,   no。
    
    protected-mode yes
    # redis     
    pidfile /var/run/redis/redis-server.pid
    
    # redis      。
    port 6379
    
    #       TCP        (        )   , 
    #          Linux     /proc/sys/net/core/somaxconn ,   511,
    #  Linux       128。                   ,
    #               。           128,                  。
    #         2048    。 /etc/sysctl.conf   :net.core.somaxconn = 2048,        sysctl -p。
    tcp-backlog 511
    
    #   redis         IP      ,       ,         
    bind 127.0.0.1
    
    #   unix socket  redis        。
    # unixsocket /var/run/redis/redis.sock
    #   unix socket       
    # unixsocketperm 700
    
    #              timeout,        , 0            ,    0。
    timeout 0
    
    # tcp keepalive  。      0,     tcp SO_KEEPALIVE ,
    #   keepalive     :       。                             。
    #  Linux   ,   keepalive,redis        ack。               。
    tcp-keepalive 0
    
    #            。    :debug(    ,    、  ),
    # verbose(       ,    debug     ),notice(       ,      ),warn(         )
    loglevel notice
    
    #          。      ,            。     redis     /dev/null。
    logfile /var/log/redis/redis-server.log
    
    #       syslog  
    # syslog-enabled no
    
    # syslog    。
    # syslog-ident redis
    
    #      、  
    # syslog-facility local0
    
    #       ,         DB 0。    ”SELECT “      db
    databases 16
    
    ################################ SNAPSHOTTING ################################
    #     
    #    “save”                   
    #   sedis          。
    # 900 (15  )   1 key   (        --   ) 
    # 300 (5  )   10 key   (        --   ) 
    # 60 (1  )   10000 key   (        --   )
    save 900 1
    save 300 10
    save 60 10000
    
    #  RDB        ,            ,yes:      ,no:        ,
    #     info  rdb_last_bgsave_status  RDB        
    stop-writes-on-bgsave-error yes
    
    #     rdb  ,rdb      LZF    ,yes:  ,      cpu   。no:   ,         
    rdbcompression yes
    
    #     rdb  。 rdb          , rdb        CRC64    。
    #            ,     rdb     ,    10%     ,          ,       。
    rdbchecksum yes
    
    # rdb     
    dbfilename dump.rdb
    
    #     ,            。rdb、aof          
    dir /var/lib/redis
    
    ################################# REPLICATION #################################
    #     ,slave     master。
    # slaveof  
    
    #  master   requirepass,  slave   master,   master     。masterauth      master   ,       master     。
    # masterauth 
    
    #                  ,          :1)   slave-serve-stale-data   yes(    ),             。2)   slave-serve-stale-data   no,  INFO SLAVOF                 ”SYNC with master in progress”。
    slave-serve-stale-data yes
    
    #      ,         (yes),     NO,   (   )。
    slave-read-only yes
    
    #    socket      。  redis        ,disk socket。    slave        slave      ,        ,master   rdb  。 2   :disk   master         rdb       ,      rdb     slave。socket master        ,   rdb   socket     slave。disk     ,   rdb      ,  slave      rdb  。socket        slave    。       ,          socket  。
    repl-diskless-sync no
    
    #diskless       ,     0。      ,        slave          rdb  。          ,    slave   。
    repl-diskless-sync-delay 5
    
    #slave               ping  。         repl_ping_slave_period    ,  10 。
    # repl-ping-slave-period 10
    
    #        。master slave         。master   slave         repl-timeout,   slave  ,   slave  。slave      master       repl-timeout,   master  。      repl-timeout       repl-ping-slave-period    ,          。
    # repl-timeout 60
    
    #      tcp   tcp nodelay  ,   yes  no。   no,   tcp nodelay。  master   yes   tcp nodelay  ,       slave   ,               。             。           ,              ,    yes。
    repl-disable-tcp-nodelay no
    
    #       ,           ,           。   slave     ,       master   ,          ,               slave,          。        ,slave         ,         slave          。  slave     ,        ,  1m。
    # repl-backlog-size 5mb
    
    #master  slave               ,repl-backlog-ttl         。    。
    # repl-backlog-ttl 3600
    
    # master   ,Sentinel   slave        master。       slave,  master。    0,       。
    slave-priority 100
    
    #redis      master       ,     min-slaves-to-write,   slave     N,mater     。master          slave         。          N slave       master    ,            slave   ,master           。   0      。
    # min-slaves-to-write 3
    
    #    min-slaves-max-lag  slave       slave。
    # min-slaves-max-lag 10
    
    #   1       0      。
    # Setting one or the other to 0 disables the feature.
    # By default min-slaves-to-write is set to 0 (feature disabled) and
    # min-slaves-max-lag is set to 10.
    
    ################################## SECURITY ###################################
    #requirepass         AUTH       ,        。  redis             。          ,       ,             。  requirepass       ,  redis   ,      15w   ,           ,              。
    # requirepass foobared
    
    #              。  CONFIG                  ,        ,           。
    # rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
    
    #        ,        
    # rename-command CONFIG ""
    ################################### LIMITS ####################################
    
    #      redis          。   10000      。
    #   redis                      slave   ,  maxclients       32。
    #      maxclients,redis        ’max number of clients reached’,     。
    # maxclients 10000
    
    # redis         。     ,    maxmemory-policy      。
    #   slave           maxmemory  。             ,     maxmemory      。
    # maxmemory 
    
    #       maxmemory      。
    # volatile-lru:  LRU            key。
    # volatile-random:            key。
    # volatile-ttl:       key,           (  TTL)
    # allkeys-lru:  LRU      key。
    # allkeys-random:      key。
    # noeviction:     key,         。
    #          ,  redis     key  ,     ,       。
    # redis        ,   get  。
    #      :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
    
    #lru      。  lru  ttl    ,             sample key,         key  。
    # maxmemory-samples 5
    
    ############################## APPEND ONLY MODE ###############################
    #  redis    rdb     ,                。  redis      ,              ,  save        ,Append Only File         ,            。Redis                 appendonly.aof   ,     Redis                ,   RDB  。
    appendonly no
    
    #aof   
    appendfilename "appendonly.aof"
    
    # aof        
    # no     fsync,              ,    。
    # always         fsync,          。
    # everysec        fsync,        1s  。
    appendfsync everysec
    
    #  aof      rdb     ,     IO,
    #     everysec always aof    ,  fsync         ,
    # no-appendfsync-on-rewrite          no。
    #             ,         yes,       no,
    #                   。   yes  rewrite        fsync,
    #        , rewrite      ,   no,  yes。Linux   fsync   30 。    30   。
    no-appendfsync-on-rewrite no
    
    # aof      。   aof            aof              ,
    #   aof            Redis    bgrewriteaof         。
    #   AOF             AOF       (   100) ,            。
    auto-aof-rewrite-percentage 100
    #         aof    ,                        
    auto-aof-rewrite-min-size 64mb
    
    # aof            , redis     ,aof          。
    #        redis            ,
    #    ext4        data=ordered  (redis                   。)
    #       ,     redis  ,           。      yes,
    #     aof        ,       log      load。   no,      redis-check-aof  AOF     。
    aof-load-truncated yes
    
    ################################ LUA SCRIPTING ###############################
    #           (  ),redis   log,    error。
    #             。
    #   SCRIPT KILL SHUTDOWN NOSAVE   。
    #          write     。       write,         。
    lua-time-limit 5000
    
    ################################ REDIS CLUSTER ###############################
    #     ,          。
    # cluster-enabled yes
    
    #          ,                 ,          。
    #             ,       Redis     ,  Redis               ,
    #                      
    # cluster-config-file nodes-6379.conf
    
    #          。         
    # cluster-node-timeout 15000
    
    #           ,  slave       master,    slave   master         ,
    #         ,   slave       master。         slave   master         。     :
    #   slave        (node-timeout * slave-validity-factor) + repl-ping-slave-period
    #             ,   slave-validity-factor 10,     repl-ping-slave-period 10 ,
    #      310 slave            
    # cluster-slave-validity-factor 10
    
    # master slave      ,slave         master ,
    #          2,            2          ,            。
    # cluster-migration-barrier 1
    
    #      ,     slot     ,      ok,      。
    #    no,   slot             。
    #         ,          ,    master        ,            。
    # cluster-require-full-coverage yes
    
    ################################## SLOW LOG ###################################
    ###slog log     redis             。             ,    slow log ,slog log      ,    IO  。
    #     slowlog-log-slower-than       slowlog  ,     ,  1000000  1 。  ,            , 0          。
    slowlog-log-slower-than 10000
    
    #       。               ,           。        。          。      SLOWLOG RESET      。
    slowlog-max-len 128
    
    ################################ LATENCY MONITOR ##############################
    #           redis            , LATENCY  redis            。                。0  ,      。            ,       ,     CONFIG SET      。
    latency-monitor-threshold 0
    
    ############################# EVENT NOTIFICATION ##############################
    #                     ,              Redis       。                  CPU ,        ,         。
    #notify-keyspace-events                ,                 :
    ##K      ,      __keyspace@__    
    ##E      ,      __keyevent@__    
    ##g DEL 、 EXPIRE 、 RENAME              
    ##$         
    ##l        
    ##s        
    ##h        
    ##z          
    ##x     :            
    ##e   (evict)  :       maxmemory          
    ##A    g$lshzxe    
    #             K    E,    ,          ,            。        http://redis.io/topics/notifications
    
    notify-keyspace-events "KEA"
    
    ############################### ADVANCED CONFIG ###############################
    #        hash-max-ziplist-entries  ziplist,  hash-max-ziplist-entries hash
    hash-max-ziplist-entries 512
    # value      hash-max-ziplist-value  ziplist,  hash-max-ziplist-value hash。
    hash-max-ziplist-value 64
    
    #        list-max-ziplist-entries ziplist,  list-max-ziplist-entries list。
    list-max-ziplist-entries 512
    # value      list-max-ziplist-value  ziplist,  list-max-ziplist-value list。
    list-max-ziplist-value 64
    
    #        set-max-intset-entries iniset,  set-max-intset-entries set。
    set-max-intset-entries 512
    
    #        zset-max-ziplist-entries ziplist,  zset-max-ziplist-entries zset。
    zset-max-ziplist-entries 128
    # value      zset-max-ziplist-value ziplist,  zset-max-ziplist-value zset。
    zset-max-ziplist-value 64
    
    # value      hll-sparse-max-bytes        (sparse),
    #   hll-sparse-max-bytes         (dense)。
    #    16000  value      ,   value   3000。
    #    CPU    ,        ,     10000  。
    hll-sparse-max-bytes 3000
    
    # Redis   100     1   CPU    redis hash     hash,         。
    #         ,           ,     Redis        2       ,      no。
    #               ,     yes,             。
    activerehashing yes
    
    #                                    ,              。
    #   normal client,   0    hard limit,   0    0    soft limit,normal client      ,        ,          。
    client-output-buffer-limit normal 0 0 0
    #   slave client MONITER client,  client-output-buffer    256mb,     64mb  60 ,                。
    client-output-buffer-limit slave 256mb 64mb 60
    #   pubsub client,  client-output-buffer    32mb,     8mb  60 ,                。
    client-output-buffer-limit pubsub 32mb 8mb 60
    
    # redis        1s  hz。
    hz 10
    
    #  aof     ,     aof-rewrite-incremental-fsync  ,    32MB    fsync。               ,           。
    aof-rewrite-incremental-fsync yes