Redis.conf文件详解

Redis.conf详解

//一些比较重要的配置了解;
1.################################## INCLUDES ###################################
    # include /path/to/local.conf //加载其他的配置文件;
    
2. ################################## NETWORK #####################################   
bind 192.168.10.102 //绑定IP
protected-mode yes //受保护模式;一般开启
port 6379 //端口
    
3.################################# GENERAL ##################################### 
daemonize yes //守护进程(后台),默认NO,手动开启;
pidfile /var/run/redis_6379.pid //如果以后台方式运行,则需要指定该进程文件;当redis在后台运行的时候,redis会默认把pid文件放/var/run/redis.pid下,也可以配置到其它地址。当运行多个redis服务器时,需要指定不同的pid文件和端口。
loglevel notice //日志等级;还有debug(开发和测试)、verbose(大量信息)、notice(生产环境)、warning(非常重要的信息)   logfile "/opt/module/redis/logs/redis.log" //生成的日志文件;
databases 16 //默认数据库数量;
    
4.################################ SNAPSHOTTING(快照)  ################################ 
save 900 1 //设置redis进行数据库镜像的频率;(在规定的时间内,执行了多少操作,就会进行持久化操作) .rdb,.aof;
save 300 10 //默认持久化触发频率;900秒内修改一次;300秒内修改10次;60秒内修改10000次;
save 60 10000 
stop-writes-on-bgsave-error yes //持久化出错后,是否继续工作;默认开启;    
rdbcompression yes //是否压缩rdb文件,需要消耗CPU资源; 
rdbchecksum yes //是否在保存rdb文件时,自动校验rdb文件;
dbfilename dump.rdb //镜像备份文件的文件名;
dir /opt/module/redis/redisdata //rdb文件保存的目录;

5.################################# REPLICATION(主从复制) #################################
//后续Redis主从复制内容中有;
    
6.################################## SECURITY ###################################
# requirepass (密码) //设置Redis密码;设置了以后用auth (密码) 先登录再操作;
    
7.################################### CLIENTS ####################################
# maxclients 10000 //最大客户端数量
    
8.############################## MEMORY MANAGEMENT ################################ 
# maxmemory <bytes> //最大内存容量;
# maxmemory-policy noeviction //内存达到上限之后的策略;(一共6种策略)
    1volatile-lru:只对设置了过期时间的key进行LRU(默认值) 
    2、allkeys-lru : 删除lru算法的key   
    3volatile-random:随机删除即将过期key   
    4、allkeys-random:随机删除   
    5volatile-ttl : 删除即将过期的   
    6、noeviction : 永不过期,返回错误
    
9.############################## APPEND ONLY MODE(AOF配置) ###############################
appendonly no //默认不开启aof模式,默认使用rdb持久化;(一般只修改这里为yes)
appendfilename "appendonly.aof" //aof保存的文件位置;开启append only模式之后,redis会把所接收到的每一次写操作请求都追加到appendonly.aof文件中,当redis重新启动时,会从该文件恢复之前的状态。(会造成appendonly.aof文件内容过大)
appendfsync everysec/always/no //每秒执行一次sync/每次修改都会写入/不同步;默认everysec;
no-appendfsync-on-rewrite no //重写的时候是否用append,默认no;
auto-aof-rewrite-percentage 100 //超过原AOF文件固定占比,开始重新,默认100%;
auto-aof-rewrite-min-size 64mb //超过设置值则重写新文件;   

//主从复制配置:
//真实主从配置,在配置文件中配置;
//重要配置:

# slaveof <masterip> <masterport> //配置主机地址和IP;//建议不配置,这样更灵活;
    
# replica-serve-stale-data yes //当master节点断开和当前salve节点的连接或者当前slave节点正在进行和master节点的数据同步时,如果收到了客户端的数据读取请求,slave服务器是否使用陈旧数据向客户端提供服务。该参数的默认值为yes。
    
# slave-read-only //一旦设置为“只读”,表示这个Salve节点只会进行数据读取服务,如果客户端直接向这个Salve节点发送写数据的请求,则会收到错误提示。建议采用默认的“yes”值进行设定。
    
# repl-backlog-size 1mb//上文已经介绍过了Redis中为了进行增量同步所准备的环形内存区域,以及Redis这样做的原因额,所以这里就不再赘述了。这个选项就是用来设置环形内存的大小的,这个选项的默认值为1MB;正式的生产环境下可以稍微加大一些,例如5MB。    
    
# slave-priority //当前Slave节点的优先级权重。我们后文会介绍一款Redis自带的监控和故障转移工具:Redis Sentinel,这个工具允许一个Master节点下有多个Slave节点,并且可以自动切换Slave节点为Master节点。如果Slave节点的优先级权重值越低,就会再切换时有限成为新的Master节点。 
    
# min-slaves-to-write和min-slaves-max-lag //为了尽可能避免Master节点对应的多个Slave节点在数据复制过程中数据差异被越拉越大。Redis服务提供了一组拒绝数据写操作的策略,这个策略可以解释为:当Master上在min-slaves-max-lag时间(单位秒)间隔后,仍然有min-slaves-to-write个Slave和它正常连接,那么Master才允许进行数据写操作。    

//不太重要配置:
    
# repl-diskless-sync no//上文已经介绍过Redis的主从复制功能基于RDB,后者的过程是将数据刷入RDB文件(实际上是Linux的Page Cache区域),然后基于RDB文件内容的更新情况和Salve当前已同步的数据标记点来进行Salve上的数据更新。所以这个过程实际会增加一定的数据延迟,消耗一定的处理资源。基于这个情况,Redis中提供了一种不经过物理磁盘设备就进行主从数据同步的技术,称为diskless。但是直到Redis version 3.2这个技术也一直处于试验状态,所以并不推荐在生产环境下使用:“ 
WARNING: DISKLESS REPLICATION IS EXPERIMENTAL CURRENTLY”。

# repl-diskless-sync-delay 5//这个参数只有在上一个参数设置为“yes”时才起作用,主要是设置在进行两次diskless模式的数据同步操作的时间间隔。默认为5秒。

# repl-ping-replica-period 10//Slave节点向Master节点发送ping指令的事件间隔,默认为10秒。

# repl-timeout //这是一个超时间,当某些操作达到这个时间时,Master和Slave双方都会认为对方已经断开连接。实际上您可以将这个时间看成是一个租约到期的时间。那么这个操作时间会影响哪些操作呢?A、向Slave进行的数据同步操作本身不能超过这个时间;B、Slave向Master发送一个PING指令并等待响应的时间;C、Master向Slave发送PONG回复并等待ACK的时间。

# repl-disable-tcp-nodelay no//这个选项的默认值为no,它对优化主从复制时使用的网络资源非常有用。要明白这个参数的含义,就首先要解释一下tcp-nodelay是个什么玩意儿?TCP数据报的报文头包含很多属性,这些属性基本上起到记录和保证传输目的、传输状态的作用,但没有数据报的所携带的业务数据(称之为有效载荷)。那么很明显,20个字节内容的信息分成20个数据报进行传输和只用一个数据报进行传输,需要占用的网络资源就完全不一样。JohnNagle在1984年发明了一种减轻网络传输压力的算法,就是为了解决这个问题(算法的名字就叫做“Nagle”,后续的技术人员又做了很多改进和升级)。其基本思路就是将要发送的内容凑够一定的数量后,再用一个数据报发送出去。如果该属性设置为yes,Redis将使用“Nagle”算法(或类似算法),让数据报中的有效载荷凑够一定数量后,在发送出去;设置成no,Redis就不会这么做。 

//哨兵模式配置:
//主要修改参数 修改端口 ,修改主节点连接信息,其他使用默认就行了:
port 26379
sentinel monitor mymaster(被监控的名称) 192.168.10.102 6379(IP) 1  //1表示至少需要 2 个哨兵节点同意,才能判定主节点故障并进行故障转移;
daemonize yes //开启守护进程(后台运行,测试的时候选no就行);    
    
# 哨兵sentinel的工作目录
dir /tmp
 
# 哨兵sentinel监控的redis主节点的 ip port 
# master-name  可以自己命名的主节点名字 只能由字母A-z、数字0-9 、这三个字符".-_"组成。
# quorum 配置多少个sentinel哨兵统一认为master主节点失联 那么这时客观上认为主节点失联了
# sentinel monitor <master-name> <ip> <redis-port> <quorum>
  sentinel monitor mymaster 192.168.10.102 6379 1
 
# 当在Redis实例中开启了requirepass foobared 授权密码 这样所有连接Redis实例的客户端都要提供密码
# 设置哨兵sentinel 连接主从的密码 注意必须为主从设置一样的验证密码
# sentinel auth-pass <master-name> <password>
sentinel auth-pass mymaster MySUPER--secret-0123passw0rd
 
 
# 指定多少毫秒之后 主节点没有应答哨兵sentinel 此时 哨兵主观上认为主节点下线 默认30秒
# sentinel down-after-milliseconds <master-name> <milliseconds>
sentinel down-after-milliseconds mymaster 30000
 
# 这个配置项指定了在发生failover主备切换时最多可以有多少个slave同时对新的master进行 同步,
这个数字越小,完成failover所需的时间就越长,
但是如果这个数字越大,就意味着越多的slave因为replication而不可用。
可以通过将这个值设为 1 来保证每次只有一个slave 处于不能处理命令请求的状态。
# sentinel parallel-syncs <master-name> <numslaves>
sentinel parallel-syncs mymaster 1
 
 
 
# 故障转移的超时时间 failover-timeout 可以用在以下这些方面: 
#1. 同一个sentinel对同一个master两次failover之间的间隔时间。
#2. 当一个slave从一个错误的master那里同步数据开始计算时间。直到slave被纠正为向正确的master那里同步数据时。
#3.当想要取消一个正在进行的failover所需要的时间。  
#4.当进行failover时,配置所有slaves指向新的master所需的最大时间。不过,即使过了这个超时,slaves依然会被正确配置为指向master,但是就不按parallel-syncs所配置的规则来了
# 默认三分钟
# sentinel failover-timeout <master-name> <milliseconds>
sentinel failover-timeout mymaster 180000
 
# SCRIPTS EXECUTION
 
#配置当某一事件发生时所需要执行的脚本,可以通过脚本来通知管理员,例如当系统运行不正常时发邮件通知相关人员。
#对于脚本的运行结果有以下规则:
#若脚本执行后返回1,那么该脚本稍后将会被再次执行,重复次数目前默认为10
#若脚本执行后返回2,或者比2更高的一个返回值,脚本将不会重复执行。
#如果脚本在执行过程中由于收到系统中断信号被终止了,则同返回值为1时的行为相同。
#一个脚本的最大执行时间为60s,如果超过这个时间,脚本将会被一个SIGKILL信号终止,之后重新执行。
 
#通知型脚本:当sentinel有任何警告级别的事件发生时(比如说redis实例的主观失效和客观失效等等),将会去调用这个脚本,
这时这个脚本应该通过邮件,SMS等方式去通知系统管理员关于系统不正常运行的信息。调用该脚本时,将传给脚本两个参数,
一个是事件的类型,
一个是事件的描述。
如果sentinel.conf配置文件中配置了这个脚本路径,那么必须保证这个脚本存在于这个路径,并且是可执行的,否则sentinel无法正常启动成功。
#通知脚本
# sentinel notification-script <master-name> <script-path>
  sentinel notification-script mymaster /var/redis/notify.sh
 
# 客户端重新配置主节点参数脚本
# 当一个master由于failover而发生改变时,这个脚本将会被调用,通知相关的客户端关于master地址已经发生改变的信息。
# 以下参数将会在调用脚本时传给脚本:
# <master-name> <role> <state> <from-ip> <from-port> <to-ip> <to-port>
# 目前<state>总是“failover”,
# <role>是“leader”或者“observer”中的一个。 
# 参数 from-ip, from-port, to-ip, to-port是用来和旧的master和新的master(即旧的slave)通信的
# 这个脚本应该是通用的,能被多次调用,不是针对性的。
# sentinel client-reconfig-script <master-name> <script-path>
 sentinel client-reconfig-script mymaster /var/redis/reconfig.sh
Redis是一个开源的高性能键值对存储数据库,其配置文件redis.conf包含了Redis的所有配置项。下面是redis.conf文件中一些重要配置项的详解: 1. bind:指定Redis监听的IP地址,默认为127.0.0.1,表示只能本地访问,如果要让其他主机访问,需要将其设置为0.0.0.0。 2. port:指定Redis监听的端口号,默认为6379。 3. daemonize:指定Redis是否以守护进程方式运行,默认为no,表示以前台进程方式运行,如果要以守护进程方式运行,需要将其设置为yes。 4. logfile:指定Redis的日志文件路径,默认为stdout,表示将日志输出到标准输出,如果要将日志输出到文件,需要指定日志文件路径。 5. databases:指定Redis支持的数据库数量,默认为16个,可以通过修改该配置项增加数据库数量。 6. maxclients:指定Redis同时连接的客户端数量,默认为10000,如果要支持更多的客户端连接,需要将其设置为更大的值。 7. maxmemory:指定Redis使用的最大内存量,如果超过该值,Redis会按照一定的策略选择一些键进行删除,默认为0,表示不限制内存使用量。 8. appendonly:指定Redis是否开启持久化功能,默认为no,表示不开启持久化功能,如果要开启持久化功能,需要将其设置为yes。 9. requirepass:指定Redis的访问密码,如果设置了该密码,客户端需要提供正确的密码才能访问Redis。 以上是redis.conf文件中一些重要配置项的详解,通过修改这些配置项可以对Redis进行定制化配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值