zoukankan      html  css  js  c++  java
  • 解析配置文件redis.conf

    units单位:
    # 1k => 1000 bytes
    # 1kb => 1024 bytes
    # 1m => 1000000 bytes
    # 1mb => 1024*1024 bytes
    # 1g => 1000000000 bytes
    # 1gb => 1024*1024*1024 bytes
    #
    # units are case insensitive so 1GB 1Gb 1gB are all the same.
     
      1  配置大小单位,开头定义了一些基本的度量单位,只支持bytes,不支持bit
      2  对大小写不敏感
     
    INCLUDES包含
    # If instead you are interested in using includes to override configuration
    # options, it is better to use include as the last line.
    #
    # include /path/to/local.conf
    # include /path/to/other.conf
     
      
     和我们的Struts2配置文件类似,可以通过includes包含,redis.conf可以作为总闸,包含其他
     
    GENERAL通用
         1.daemonize
    # By default Redis does not run as a daemon. Use 'yes' if you need it.
    # Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
    daemonize yes                        //是否以守护进程运行,默认是no,我这里设置为yes。后台运行。
        2.pidfile
    # When the server runs non daemonized, no pid file is created if none is
    # specified in the configuration. When the server is daemonized, the pid file
    # is used even if not specified, defaulting to "/var/run/redis.pid".
    #
    # Creating a pid file is best effort: if Redis is not able to create it
    # nothing bad happens, the server will start and run normally.
    pidfile /var/run/redis_6379.pid
     
        3.port
    # Accept connections on the specified port, default is 6379 (IANA #815344).
    # If port 0 is specified Redis will not listen on a TCP socket.
    port 6379
     
        4.tcp-backlog
    # TCP listen() backlog.
    tcp-backlog 511            //默认511
     
    设置tcp的backlog,backlog其实是一个连接队列,backlog队列总和=未完成三次握手队列 + 已经完成三次握手队列。
    在高并发环境下你需要一个高backlog值来避免慢客户端连接问题。注意Linux内核会将这个值减小到/proc/sys/net/core/somaxconn的值,所以需要确认增大somaxconn和tcp_max_syn_backlog两个值
    来达到想要的效果
     
     5.timeout
     
    # Close the connection after a client is idle for N seconds (0 to disable)    //在客户端N秒空闲时间后,关闭连接。默认不关闭连接,一直开启。
    timeout 0
     
        6.bind
    # IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES
    # JUST COMMENT THE FOLLOWING LINE.
    # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~绑定指定ip,可以绑定多个,如果允许全部ip访问,就注释下面bind指令
    #bind 127.0.0.1
     
       7.tcp-keepalive
    # A reasonable value for this option is 300 seconds, which is the new
    # Redis default starting with Redis 3.2.1.
    tcp-keepalive 300                                                                        //从redis3.2.1版开始,默认值是300s
     
    单位为秒,如果设置为0,则不会进行Keepalive检测,建议设置成60
        8.loglevel
     
    # This can be one of:
    # debug (a lot of information, useful for development/testing)
    # verbose (many rarely useful info, but not a mess like the debug level)
    # notice (moderately verbose, what you want in production probably)
    # warning (only very important / critical messages are logged)
    loglevel notice                    //日志级别。有debug,verbose,notice,warning,层次上升,输出也就越来越少
     
        9.logfile
     
    # Specify the log file name. Also the empty string can be used to force
    # Redis to log on the standard output. Note that if you use standard
    # output for logging but daemonize, logs will be sent to /dev/null
    logfile ""            //日志文件名,默认为空
     
     
        10.syslog-enabled
    # To enable logging to the system logger, just set 'syslog-enabled' to yes,
    # and optionally update the other syslog parameters to suit your needs.
    # syslog-enabled no
     
    //是否把日志输出到syslog中,默认注释了
     
      11.syslog-ident
    # Specify the syslog identity.
    # syslog-ident redis
     
    指定syslog里的日志标志
     
      12.syslog-facility
    # Specify the syslog facility. Must be USER or between LOCAL0-LOCAL7.
    # syslog-facility local0
     
    指定syslog设备,值可以是USER或LOCAL0-LOCAL7
     
      13.databases
    # Set the number of databases. The default database is DB 0, you can select
    # a different one on a per-connection basis using SELECT <dbid> where
    # dbid is a number between 0 and 'databases'-1
    databases 16
     
    redis默认有16个库,默认操作的是db 0,可以select dbid选择操作那个库
     
    SNAPSHOTTING快照
         1.Save the DB on disk
     
    #   save <seconds> <changes>
    #   In the example below the behaviour will be to save:
    #   after 900 sec (15 min) if at least 1 key changed
    #   after 300 sec (5 min) if at least 10 keys changed
    #   after 60 sec if at least 10000 keys changed
     
     
    save 900 1                // save 秒钟 写操作次数
    save 300 10
    save 60 10000
     
    RDB是整个内存的压缩过的Snapshot,RDB的数据结构,可以配置复合的快照触发条件,
    默认
    是1分钟内改了1万次,
    或5分钟内改了10次,
    或15分钟内改了1次。
     
    禁用:
    #   save ""
    如果想禁用RDB持久化的策略,只要不设置任何save指令,或者给save传入一个空字符串参数也可以
     
     
        2.stop-writes-on-bgsave-error    //如果为yes,后台持久化出现错误时就停止写操作
     
    如果配置成no,表示你不在乎数据不一致或者有其他的手段发现和控制
     
     3. rdbcompression            //是否压缩
     
    rdbcompression:对于存储到磁盘中的快照,可以设置是否进行压缩存储。如果是的话,redis会采用LZF算法进行压缩。如果你不想消耗CPU来进行压缩的话,可以设置为关闭此功能
     
        4. rdbchecksum
     
    rdbchecksum:在存储快照后,还可以让redis使用CRC64算法来进行数据校验,但是这样做会增加大约10%的性能消耗,如果希望获取到最大的性能提升,可以关闭此功能
     
        5. dbfilename
     
    # The filename where to dump the DB
    dbfilename dump.rdb
     
    rdb的默认文件名
     
        6. dir
     
    # The working directory.
    #
    # The DB will be written inside this directory, with the filename specified
    # above using the 'dbfilename' configuration directive.
    #
    # The Append Only File will also be created inside this directory.
    #
    # Note that you must specify a directory here, not a file name.
    dir ./               //dump.rdb默认是生成在你运行redis的目录下
     
     
    REPLICATION复制(主从复制,之后详细完善)
     
    SECURITY安全
     
    requirepass dingxu
     
    在客户端执行命令时需要:AUTH <PASSWORD>授权
     
     
    LIMITS限制
     
        1.maxclients
     
    设置redis同时可以与多少个客户端进行连接。默认情况下为10000个客户端。当你无法设置进程文件句柄限制时,redis会设置为当前的文件句柄限制值减去32,因为redis会为自身内部处理逻辑留一些句柄出来。如果达到了此限制,redis则会拒绝新的连接请求,并且向这些连接请求方发出“max number of clients reached”以作回应。
     
        2.maxmemory
     
    设置redis可以使用的内存量。一旦到达内存使用上限,redis将会试图移除内部数据,移除规则可以通过maxmemory-policy来指定。如果redis无法根据移除规则来移除内存中的数据,或者设置了“不允许移除”,那么redis则会针对那些需要申请内存的指令返回错误信息,比如SET、LPUSH等。
    但是对于无内存申请的指令,仍然会正常响应,比如GET等。如果你的redis是主redis(说明你的redis有从redis),那么在设置内存使用上限时,需要在系统中留出一些内存空间给同步队列缓存,只有在你设置的是“不移除”的情况下,才不用考虑这个因素
     
     
     3.maxmemory-policy
     
    (1)volatile-lru:使用LRU算法移除key,只对设置了过期时间的键
    (2)allkeys-lru:使用LRU算法移除key
    (3)volatile-random:在过期集合中移除随机的key,只对设置了过期时间的键
    (4)allkeys-random:移除随机的key
    (5)volatile-ttl:移除那些TTL值最小的key,即那些最近要过期的key
    (6)noeviction:不进行移除。针对写操作,只是返回错误信息
     
        4.maxmemory-samples
     
    设置样本数量,LRU算法和最小TTL算法都并非是精确的算法,而是估算值,所以你可以设置样本的大小,
    redis默认会检查这么多个key并选择其中LRU的那个
     
     
     
    APPEND ONLY MODE追加
        1. appendonly
        2. appendfilename
        3.appendfsync
     
    always:同步持久化 每次发生数据变更会被立即记录到磁盘  性能较差但数据完整性比较好
    everysec:出厂默认推荐,异步操作,每秒记录   如果一秒内宕机,有数据丢失
    no
      4.no-appendfsync-on-rewrite:重写时是否可以运用Appendfsync,用默认no即可,保证数据安全性。
        5.auto-aof-rewrite-min-size:设置重写的基准值
        6.auto-aof-rewrite-percentage:设置重写的基准值
     
  • 相关阅读:
    swagger序列化对example属性的特殊处理造成的json格式异常问题
    Elasticsearch 6.2.4 xpack白金版破解-仅供交流学习使用
    Logback多进程写入同一日志文件时滚动日期混乱问题
    mycat事务中上来执行select马上提交——小猫如此折腾,我选dble
    我家很管事的猫——mycat初步部署实践与问题排查
    certbot https签发证书与自动更新——acme实在太难用,certbot一键式全搞定
    自力更生Collections.sort发现比较结果混乱?Comparator的锅还是强转类型导致?
    Java SPI、servlet3.0与@HandlesTypes源码分析
    真——Springcloud支持Https
    Controller层的方法访问标志与Spring装配与AspectJ切面处理
  • 原文地址:https://www.cnblogs.com/dingxu/p/8966425.html
Copyright © 2011-2022 走看看