zoukankan      html  css  js  c++  java
  • redis配置文件详解

    1、include

    解释:引入其它配置文件。比如说当你有多个server,而有一些配置项是它们公用的,那么你可以将这些公用的配置项写进一个配置文件common.conf里,然后这些server再include这个配置文件,这些server自己的配置项则分别写在自己的配置文件里。

    示例:include /path/to/common.conf

    2、loadmodule

    解释:此配置项尚未了解。注释是这样的:启动时加载模块,如果server无法加载模块,则此配置会被忽略。可以使用多个loadmodule。
    示例:loadmodule /path/to/my_module.so

    3、bind

    解释:默认情况下,redis 在 server 上所有有效的网络接口上监听客户端连接。如果只想让它在一个或多个网络接口上监听,那你就绑定一个IP或者多个IP。多个ip空格分隔即可。

    示例: bind 192.168.1.100 10.0.0.1
    bind 127.0.0.1 ::1

    4、protected-mode

    解释:当开启后,禁止公网访问redis。它启用的条件有两个,第一是没有使用bind,第二是没有设置访问密码。

    示例:protected-mode yes

    5、port

    解释:指定该redis server监听的端口号。默认是6379,如果指定0则不监听。

    示例:port 6379

    6、tcp-backlog

    解释:此参数确定了TCP连接中已完成队列(完成三次握手之后)的长度, 当然此值必须不大于Linux系统定义的/proc/sys/net/core/somaxconn值,默认是511,而Linux的默认参数值是128。当系统并发量大并且客户端速度缓慢的时候,可以将这二个参数一起参考设定。
    示例:tcp-backlog 511
    7、unixsocket
    解释:指定 unix socket 的路径。
    示例:unixsocket /tmp/redis.sock
    8、unixsocketperm
    解释:指定 unix socket file 的权限。

    示例:unixsocketperm 755
    9、timeout

    解释:当客户端闲置多少秒后关闭连接,如果设置为0表示关闭该功能。

    示例:timeout 30
    10、tcp-keepalive
    解释:单位是秒,表示将周期性的使用SO_KEEPALIVE检测客户端是否还处于健康状态,避免服务器一直阻塞,官方给出的建议值是300S
    示例:tcp-keepalive 300

    11、daemonize

    解释:是否以守护模式启动,默认为no,配置为yes时以守护模式启动,这时redis instance会将进程号pid写入默认文件/var/run/redis.pid。

    示例:daemonize yes

    12、supervised
    解释:可以通过upstart和systemd管理Redis守护进程,这个参数是和具体的操作系统相关的。

    示例:supervised no

    13、pidfile
    解释:配置pid文件路径。当redis以守护模式启动时,如果没有配置pidfile,pidfile默认值是/var/run/redis.pid 。
    示例:pidfile /var/run/redis_6379.pid

    14、loglevel

    解释:日志级别。可选项有:debug(记录大量日志信息,适用于开发、测试阶段); verbose(较多日志信息); notice(适量日志信息,使用于生产环境);warning(仅有部分重要、关键信息才会被记录)。

    示例:loglevel notice

    15、logfile
    解释:日志文件的位置,当指定为空字符串时,为标准输出,如果redis已守护进程模式运行,那么日志将会输出到 /dev/null 。

    示例:logfile ""

    16、syslog-enabled

    解释:是否把日志记录到系统日志。(何意?)
    示例:syslog-enabled no
    17、syslog-ident

    解释:设置系统日志的id

    示例:syslog-ident redis
    18、syslog-facility
    解释:指定syslog设备(facility),必须是user或则local0到local7。

    示例:syslog-facility local0

    19、databases

    解释:设置数据库的数目。默认的数据库是DB 0 ,可以在每个连接上使用select <dbid> 命令选择一个不同的数据库,dbid是一个介于0到databases - 1 之间的数值。
    示例:databases 16

     

    20、save

    解释:保存数据到磁盘。格式是:save <seconds> <changes> ,含义是在 seconds 秒之后至少有 changes个keys 发生改变则保存一次。

    示例:save 900 1
    save 300 10
    save 60 10000

    21、stop-writes-on-bgsave-error

    解释:默认情况下,如果 redis 最后一次的后台保存失败,redis 将停止接受写操作,这样以一种强硬的方式让用户知道数据不能正确的持久化到磁盘, 否则就会没人注意到灾难的发生。 如果后台保存进程重新启动工作了,redis 也将自动的允许写操作。然而你要是安装了靠谱的监控,你可能不希望 redis 这样做,那你就改成 no 好了。
    示例:stop-writes-on-bgsave-error no

    22、rdbcompression

    解释:是否在dump .rdb数据库的时候压缩字符串,默认设置为yes。如果你想节约一些cpu资源的话,可以把它设置为no,这样的话数据集就可能会比较大。

    示例:rdbcompression yes
    23、rdbchecksum
    解释:是否CRC64校验rdb文件,会有一定的性能损失(大概10%)。

    示例:rdbchecksum yes

    24、dbfilename

    解释:rdb文件的名字。

    示例:dbfilename dump.rdb
    25、dir
    解释:数据库存放目录。必须是一个目录,aof文件也会保存到该目录下。

    示例:dir ./
    26、slaveof

    解释:设置本机为slave服务。格式:slaveof <masterip> <masterport>。设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步。

    示例:slaveof 192.168.0.1 6379

    27、masterauth
    解释:当master服务设置了密码保护时,slav服务连接master的密码。

    示例:masterauth 123456
    28、slave-serve-stale-data

    解释:当一个slave与master失去联系时,或者复制正在进行的时候,slave应对请求的行为:1) 如果为 yes(默认值) ,slave 仍然会应答客户端请求,但返回的数据可能是过时,或者数据可能是空的在第一次同步的时候;2) 如果为 no ,在你执行除了 info 和 salveof 之外的其他命令时,slave 都将返回一个 "SYNC with master in progress" 的错误。
    示例:slave-serve-stale-data yes
    29、slave-read-only

    解释:设置slave是否是只读的。从2.6版起,slave默认是只读的。

    示例:slave-read-only yes

    30、repl-diskless-sync
    解释:主从数据复制是否使用无硬盘复制功能。

    示例:repl-diskless-sync no

    31、repl-ping-slave-period

    解释:指定slave定期ping master的周期,默认10秒钟。

    示例:repl-ping-slave-period 10

    32、repl-timeout

    解释:设置主库批量数据传输时间或者ping回复时间间隔,默认值是60秒 。
    示例:repl-timeout 60
    33、repl-disable-tcp-nodelay
    解释:指定向slave同步数据时,是否禁用socket的NO_DELAY选 项。若配置为“yes”,则禁用NO_DELAY,则TCP协议栈会合并小包统一发送,这样可以减少主从节点间的包数量并节省带宽,但会增加数据同步到 slave的时间。若配置为“no”,表明启用NO_DELAY,则TCP协议栈不会延迟小包的发送时机,这样数据同步的延时会减少,但需要更大的带宽。 通常情况下,应该配置为no以降低同步延时,但在主从节点间网络负载已经很高的情况下,可以配置为yes。

    示例:repl-disable-tcp-nodelay no
    34、repl-backlog-size

    解释:设置主从复制backlog容量大小。这个 backlog 是一个用来在 slaves 被断开连接时存放 slave 数据的 buffer,所以当一个 slave 想要重新连接,通常不希望全部重新同步,只是部分同步就够了,仅仅传递 slave 在断开连接时丢失的这部分数据。这个值越大,salve 可以断开连接的时间就越长。

    示例:repl-backlog-size 1mb

    35、repl-backlog-ttl
    解释:配置当master和slave失去联系多少秒之后,清空backlog释放空间。当配置成0时,表示永远不清空。

    示例:repl-backlog-ttl 3600

    36、slave-priority
    解释:当 master 不能正常工作的时候,Redis Sentinel 会从 slaves 中选出一个新的 master,这个值越小,就越会被优先选中,但是如果是 0 , 那是意味着这个 slave 不可能被选中。 默认优先级为 100。

    示例:slave-priority 100
    37、requirepass

    解释:设置redis连接密码。

    示例:requirepass foobared
    38、rename-command
    解释:将命令重命名。为了安全考虑,可以将某些重要的、危险的命令重命名。当你把某个命令重命名成空字符串的时候就等于取消了这个命令。

    示例:rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52

    rename-command CONFIG ""
    39、maxclients

    解释:设置客户端最大并发连接数,默认无限制,Redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件描述符数-32(redis server自身会使用一些),如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis会关闭新的连接并向客户端返回max number of clients reached错误信息。

    示例:maxclients 10000
    40、maxmemory
    解释: 指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理 后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis新的vm机制,会把Key存放内存,Value会存放在swap区,格式:maxmemory <bytes> 。

    示例:maxmemory 1024000

    41、maxmemory-policy
    解释:当内存使用达到最大值时,redis使用的清楚策略。有以下几种可以选择(明明有6种,官方配置文件里却说有5种可以选择?):

    1)volatile-lru 利用LRU算法移除设置过过期时间的key (LRU:最近使用 Least Recently Used )
    2)allkeys-lru 利用LRU算法移除任何key

    3)volatile-random 移除设置过过期时间的随机key

    4)allkeys-random 移除随机key
    5)volatile-ttl 移除即将过期的key(minor TTL)

    6)noeviction noeviction 不移除任何key,只是返回一个写错误 。默认选项
    示例:maxmemory-policy noeviction

    42、maxmemory-samples
    解释:LRU 和 minimal TTL 算法都不是精准的算法,但是相对精确的算法(为了节省内存),随意你可以选择样本大小进行检测。redis默认选择3个样本进行检测,你可以通过maxmemory-samples进行设置 样本数。

    示例:maxmemory-samples 5
    43、appendonly

    解释:是否启用aof持久化方式 。即是否在每次更新操作后进行日志记录,默认配置是no,即在采用异步方式把数据写入到磁盘,如果不开启,可能会在断电时导致部分数据丢失。

    示例:appendonly no

    44、appendfilename

    解释:更新日志文件名,默认值为appendonly.aof 。

    示例:appendfilename "appendonly.aof"
    45、appendfsync

    解释:aof文件刷新的频率。有三种:

    1)no 依靠OS进行刷新,redis不主动刷新AOF,这样最快,但安全性就差。
    2) always 每提交一个修改命令都调用fsync刷新到AOF文件,非常非常慢,但也非常安全。
    3) everysec 每秒钟都调用fsync刷新到AOF文件,很快,但可能会丢失一秒以内的数据。
    示例:appendfsync everysec
    46、no-appendfsync-on-rewrite
    解释:指定是否在后台aof文件rewrite期间调用fsync,默认为no,表示要调用fsync(无论后台是否有子进程在刷盘)。Redis在后台写RDB文件或重写AOF文件期间会存在大量磁盘IO,此时,在某些linux系统中,调用fsync可能会阻塞。

    示例:no-appendfsync-on-rewrite no

    47、auto-aof-rewrite-percentage

    解释:当AOF文件增长到一定大小的时候Redis能够调用 BGREWRITEAOF 对日志文件进行重写 。当AOF文件大小的增长率大于该配置项时自动开启重写。

    示例:auto-aof-rewrite-percentage 100

    48、auto-aof-rewrite-min-size

     

    解释:当AOF文件增长到一定大小的时候Redis能够调用 BGREWRITEAOF 对日志文件进行重写 。当AOF文件大小大于该配置项时自动开启重写。

    示例:auto-aof-rewrite-min-size 64mb

    49、aof-load-truncated
    解释:redis在启动时可以加载被截断的AOF文件,而不需要先执行 redis-check-aof 工具。

    示例:aof-load-truncated yes

    50、lua-time-limit

    解释:一个Lua脚本最长的执行时间,单位为毫秒,如果为0或负数表示无限执行时间,默认为5000。

    示例:lua-time-limit 5000

    Redis 的 master/slave 复制:

    Redis 的 master/slave 数据复制方式可以是一主一从或者是一主多从的方式,Redis 在
    master 是非阻塞模式,也就是说在 slave 执行数据同步的时候,master 是可以接受客户端的
    请求的,并不影响同步数据的一致性,然而在 slave 端是阻塞模式的,slave 在同步 master
    数据时,并不能够响应客户端的查询
    Redis 的 master/slave 模式下,master 提供数据读写服务,而 slave 只提供读服务

    Redis 的 master/slave 的配置方式是在 slave 主机的 Redis 目录下的 redis.conf 配置文件中
    添加:
    slaveof master_ip master_port

    例如:
    我们配置我们的 slave 为:redis-slave.conf
    daemonize yes
    pidfile redis-slave.pid
    port 6380
    timeout 300
    loglevel verbose
    logfile stdout
    databases 16
    save 900 1
    save 300 10
    save 60 10000
    rdbcompression yes
    dbfilename dump-slave.rd

    dir /home/falcon/redis-2.0.0/
    slaveof 127.0.0.1 6379
    appendonly no
    appendfsync everysec
    vm-enabled no
    vm-swap-file logs/redis-slave.swap
    vm-max-memory 0
    vm-page-size 32

    m-pages 134217728
    vm-max-threads 4
    glueoutputbuf yes
    hash-max-zipmap-entries 64
    hash-max-zipmap-value 512
    activerehashing yes

    启动 slave:

    ./redis-server redis_slave.conf

    查看状态信息: 

    [root@localhost redis]# redis-cli -p 6379 info
    # Server
    redis_version:3.2.5
    redis_git_sha1:00000000
    redis_git_dirty:0
    redis_build_id:f194157f79ccf838
    redis_mode:standalone
    os:Linux 3.10.0-327.el7.x86_64 x86_64
    arch_bits:64
    multiplexing_api:epoll
    gcc_version:4.8.5
    process_id:122337
    run_id:27af9a24043df2112e76f000f4eeb77b228bdbe3
    tcp_port:6379
    uptime_in_seconds:3300
    uptime_in_days:0
    hz:10
    lru_clock:4136165
    executable:/root/redis/./redis-server
    config_file:/root/redis/redis.conf

    # Clients
    connected_clients:1
    client_longest_output_list:0
    client_biggest_input_buf:0
    blocked_clients:0

    # Memory
    used_memory:1891640
    used_memory_human:1.80M
    used_memory_rss:2301952
    used_memory_rss_human:2.20M
    used_memory_peak:1891640
    used_memory_peak_human:1.80M
    total_system_memory:1913536512
    total_system_memory_human:1.78G
    used_memory_lua:37888
    used_memory_lua_human:37.00K
    maxmemory:0
    maxmemory_human:0B
    maxmemory_policy:noeviction
    mem_fragmentation_ratio:1.22
    mem_allocator:jemalloc-4.0.3

    # Persistence
    loading:0
    rdb_changes_since_last_save:0
    rdb_bgsave_in_progress:0
    rdb_last_save_time:1514085572
    rdb_last_bgsave_status:ok
    rdb_last_bgsave_time_sec:0
    rdb_current_bgsave_time_sec:-1
    aof_enabled:0
    aof_rewrite_in_progress:0
    aof_rewrite_scheduled:0
    aof_last_rewrite_time_sec:-1
    aof_current_rewrite_time_sec:-1
    aof_last_bgrewrite_status:ok
    aof_last_write_status:ok

    # Stats
    total_connections_received:40
    total_commands_processed:99
    instantaneous_ops_per_sec:0
    total_net_input_bytes:3163
    total_net_output_bytes:11696852
    instantaneous_input_kbps:0.02
    instantaneous_output_kbps:0.00
    rejected_connections:0
    sync_full:1
    sync_partial_ok:0
    sync_partial_err:0
    expired_keys:0
    evicted_keys:0
    keyspace_hits:37
    keyspace_misses:2
    pubsub_channels:0
    pubsub_patterns:0
    latest_fork_usec:220
    migrate_cached_sockets:0

    # Replication
    role:master
    connected_slaves:1
    slave0:ip=192.168.163.130,port=6380,state=online,offset=43,lag=1
    master_repl_offset:43
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:2
    repl_backlog_histlen:42

    # CPU
    used_cpu_sys:1.62
    used_cpu_user:0.96
    used_cpu_sys_children:0.01
    used_cpu_user_children:0.00

    # Cluster
    cluster_enabled:0

    # Keyspace
    db0:keys=12,expires=0,avg_ttl=0


    [root@localhost redis]# redis-cli -p 6380 info
    # Server
    redis_version:3.2.5
    redis_git_sha1:00000000
    redis_git_dirty:0
    redis_build_id:f194157f79ccf838
    redis_mode:standalone
    os:Linux 3.10.0-327.el7.x86_64 x86_64
    arch_bits:64
    multiplexing_api:epoll
    gcc_version:4.8.5
    process_id:129723
    run_id:652680ee12086a8feabe4b4e74fe57a868226ee0
    tcp_port:6380
    uptime_in_seconds:38
    uptime_in_days:0
    hz:10
    lru_clock:4136170
    executable:/root/redis/./redis-server
    config_file:/root/redis/redis_slave.conf

    # Clients
    connected_clients:2
    client_longest_output_list:0
    client_biggest_input_buf:0
    blocked_clients:0

    # Memory
    used_memory:844144
    used_memory_human:824.36K
    used_memory_rss:2281472
    used_memory_rss_human:2.18M
    used_memory_peak:844144
    used_memory_peak_human:824.36K
    total_system_memory:1913536512
    total_system_memory_human:1.78G
    used_memory_lua:37888
    used_memory_lua_human:37.00K
    maxmemory:0
    maxmemory_human:0B
    maxmemory_policy:noeviction
    mem_fragmentation_ratio:2.70
    mem_allocator:jemalloc-4.0.3

    # Persistence
    loading:0
    rdb_changes_since_last_save:0
    rdb_bgsave_in_progress:0
    rdb_last_save_time:1514085572
    rdb_last_bgsave_status:ok
    rdb_last_bgsave_time_sec:-1
    rdb_current_bgsave_time_sec:-1
    aof_enabled:0
    aof_rewrite_in_progress:0
    aof_rewrite_scheduled:0
    aof_last_rewrite_time_sec:-1
    aof_current_rewrite_time_sec:-1
    aof_last_bgrewrite_status:ok
    aof_last_write_status:ok

    # Stats
    total_connections_received:1
    total_commands_processed:4
    instantaneous_ops_per_sec:0
    total_net_input_bytes:303
    total_net_output_bytes:1324
    instantaneous_input_kbps:0.01
    instantaneous_output_kbps:0.04
    rejected_connections:0
    sync_full:0
    sync_partial_ok:0
    sync_partial_err:0
    expired_keys:0
    evicted_keys:0
    keyspace_hits:0
    keyspace_misses:0
    pubsub_channels:0
    pubsub_patterns:0
    latest_fork_usec:0
    migrate_cached_sockets:0

    # Replication
    role:slave
    master_host:192.168.163.130
    master_port:6379
    master_link_status:up
    master_last_io_seconds_ago:2
    master_sync_in_progress:0
    slave_repl_offset:57
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_repl_offset:0
    repl_backlog_active:0
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:0
    repl_backlog_histlen:0

    # CPU
    used_cpu_sys:0.02
    used_cpu_user:0.02
    used_cpu_sys_children:0.00
    used_cpu_user_children:0.00

    # Cluster
    cluster_enabled:0

    # Keyspace
    db0:keys=12,expires=0,avg_ttl=0

    Redis 可以做一主一从,也可以做一主多从,更可以做一主一从,在从下面挂从

  • 相关阅读:
    webpack4系列之 【2. 踩坑--webpack 2.x升级至4.x】
    计算月份差方法封装
    局域网内访问另一台电脑上运行的代码
    npm遇到的问题--npm install 执行报错 /bin/git submodule update -q --init --recursive
    功能说明书
    第一次结对作业
    MathExam
    第一次作业
    2017《Java预备作业》02 计科1501 李晓燕
    2017《Java技术》预备作业 计科1501 李晓燕
  • 原文地址:https://www.cnblogs.com/hsia2017/p/8371691.html
Copyright © 2011-2022 走看看