第八章 Redis配置文件详解

# ==========Units单位配置==========
# 配置大小单位,定义了一些基本的度量单位,只支持 bytes,不支持 bit,大小写不敏感
# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytes

# ==========INCLUDES==============
# 多实例的情况可以把公用的配置文件提取出来
# include /path/to/local.conf
# include /path/to/other.conf

# ==========NETWORK===============
# 指定Redis绑定的IP地址,默认是127.0.0.1,只允许本地连接。可以设置为0.0.0.0来允许所有IP地址连接
# 实际工作项目中我们是要支持其他服务器IP远程访问的
bind 127.0.0.1

# 指定Redis服务器监听的端口,默认是6379
# 建议实际生产环境不要使用默认端口,避免被恶意扫描
port 6379

# tcp keepalive参数  
# 对访问客户端的一种心跳检测,每个 n 秒检测一次
# 单位为秒,如果设置为0,则不会进行keepalive检测,建议设置成60
tcp-keepalive 300

#客户端连接空闲超过timeout将会被断开,为0则关闭该功能(0表示永不会断,一直连着)
timeout 0

# 设置tcp的backlog
# backlog是一个连接队列
# backlog队列总和=未完成三次握手队列+已经完成三次握手队列
# 在高并发环境下需要一个高backlog值来避免慢客户端连接问题
# Linux内核会将这个值减小到/proc/sys/net/core/somaxconn的值(128),所以需要确认增大
# /proc/sys/net/core/somaxconn 和/proc/sys/net/ipv4/tcp_max_syn_backlog(128)
# 两个值来达到想要的效果
tcp-backlog 511

# ===============内存================
# 内存到达上限之后的处理策略
# volatile-lru:使用LRU算法移除key,只针对已设置过期时间的key(最近最少使用)
# volatile-lru:只对已设置过期时间的key进行LRU(默认值)
# allkeys-lru:在所有集合key中,使用LRU算法移除key
# volatile-random:随机删除即将过期key在过期集合中移除随机的key,只对设置了过期时间的键
# allkeys-random:在所有集合key中,移除随机的key
# volatile-ttl:删除即将过期的,移除那些TTL值最小的key,即那些最近要过期的key
# noeviction:永不过期,返回错误不进行移除。针对写操作,只是返回错误信息
maxmemory-policy noeviction 
 
# 设置样本数量,LRU算法和最小TTL算法都并非是精确的算法,而是估算值,所以你可以设置样本的大小
# redis默认会检查这么多个key并选择其中LRU的那个
# 一般设置3到7的数字,数值越小样本越不准确,但性能消耗越小
maxmemory-samples 5

# =============持久化================
# 设置最大内存,超过后将触发内存回收策略
maxmemory 2gb

# 是否开启AOF持久化模式,默认是no
appendonly yes

# 900秒(15分钟)内至少1个key值改变(则进行数据库保存--持久化) 
save 900 1
 
#  300秒(5分钟)内至少10个key值改变(则进行数据库保存--持久化)
save 300 10
 
# 60秒(1分钟)内至少10000个key值改变(则进行数据库保存--持久化)
save 60 10000
 
# 持久化如果出错,是否还需要继续工作?yes:不能进行工作,no:可以继续进行工作
# 可以通过info中的rdb_last_bgsave_status了解RDB持久化是否有错误
stop-writes-on-bgsave-error yes 
 
# 是否压缩rdb 文件,rdb文件压缩使用LZF压缩算法
# yes:压缩,但需要一些cpu的消耗;no:不压缩,但需要更多的磁盘空间
rdbcompression yes 
 
# 保存rdb文件时,进行错误的检查校验
rdbchecksum yes 
 
# 命名持久化文件名称
dbfilename dump.rdb
 
# rdb文件保存的目录,数据库的写入会在这个目录。rdb、aof文件也会写在这个目录
dir ./

# AOF文件名,默认是appendonly.aof
appendfilename "appendonly.aof"

# 设置访问数据库时需要的密码
requirepass yourpassword

# 设置同时连接的客户端上限,默认是10000
maxclients 10000
​
# 是否开启保护模式。如果没有指定bind和密码,redis只会本地进行访问,拒绝外部访问。
# 将本机访问保护模式设置 no 
protected-mode yes  

# 是否以守护进程方式运行(后台方式运行),默认是no
daemonize yes 

# 配置unix socket来让redis支持监听本地连接。
#unixsocket /tmp/redis.sock
 
# 配置unix socket使用文件的权限
#unixsocketperm 700
 
# 通过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 auto
 
# 日志级别配置
# debug
# verbose 开发测试环境建议的选项
# notice 生产环境中建议的选项,简化日志输出量,降低服务器资源(内存/IO等)开销
# warning
loglevel notice
 
# 指定日志文件路径,默认是标准输出
logfile "/var/log/redis/redis-server.log"

# 指定持久化数据存储的目录,默认是当前目录
dir /var/lib/redis

# pidfile 存放 pid 文件的位置,每个实例会产生一个不同的 pid 文件
pidfile /var/run/redis_6379.pid

# 数据库的数量,默认是16个数据库,默认数据库为0
databases 16 
 
# 是否总是显示LOGO 
always-show-logo yes

# =============主从复制=============
# 主从复制指定主节点master设置 主机的ip及端口
replicaof <masterip> <masterport>
replicaof 192.168.1.20 6379
 
# master的密码设置 是否需要密码
masterauth <master-password>
 
# 当一个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
 
# 配置从是否为只读,开启后从则不能写入数据
replica-read-only yes
 
# 同步策略: 磁盘或socket,默认磁盘方式
repl-diskless-sync no
 
# 如果非磁盘同步方式开启,可以配置同步延迟时间,以等待master产生子进程通过socket传输RDB数据给slave。
# 默认值为5秒,设置为0秒则每次传输无延迟
repl-diskless-sync-delay 5
 
# slave根据指定的时间间隔向master发送ping请求。默认10秒
repl-ping-replica-period 10
 
# 同步的超时时间
# slave在与master SYNC期间有大量数据传输,造成超时
# 在slave角度,master超时,包括数据、ping等
# 在master角度,slave超时,当master发送REPLCONF ACK pings
# 确保这个值大于指定的repl-ping-slave-period,否则在主从间流量不高时每次都会检测到超时
repl-timeout 60
 
# 是否在slave套接字发送SYNC之后禁用 TCP_NODELAY
# 如果选择yes,Redis将使用更少的TCP包和带宽来向slaves发送数据。但这将使数据传输到slave上有延
# 迟,Linux内核的默认配置会达到40毫秒
# 如果选择no,数据传输到salve的延迟将会减少但要使用更多的带宽
# 默认我们会为低延迟做优化,但高流量情况或主从之间的跳数过多时,可以设置为“yes”
repl-disable-tcp-nodelay no
 
# 设置数据备份的backlog大小
repl-backlog-size 1mb
 
# 从最后一个slave断开开始计时多少秒后,backlog缓冲将会释放
repl-backlog-ttl 3600
 
# 优先级
replica-priority 100
 
# 如果master少于N个延时小于等于M秒的已连接slave,就可以停止接收写操作
# N个slave需要是“oneline”状态
# 延时是以秒为单位,且必须小于等于指定值,从最后一个从slave接收到的ping(通常每秒发送)开始计数
# 该选项不保证N个slave正确同步写操作,但是限制数据丢失的窗口期
# 例如至少需要3个延时小于等于10秒的slave用下面的指令:
min-replicas-to-write 3
min-replicas-max-lag 10

# =============懒删除与慢日志============
#内存满逐出
lazyfree-lazy-eviction no
 
#过期key删除
lazyfree-lazy-expire no
 
#内部删除,比如rename oldkey newkey时,如果newkey存在需要删除newkey
lazyfree-lazy-server-del no
 
#接收完RDB文件后清空数据选项
replica-lazy-flush no
 
# 记录超过多少微秒的查询命令
# 1000000等于1秒,设置为0则记录所有命令
slowlog-log-slower-than 10000
 
# 记录大小,可通过SLOWLOG RESET命令重置
slowlog-max-len 128

# ================集群配置==============
# 开启redis集群
cluster-enabled yes
 
# 配置redis自动生成的集群配置文件名,确保同一系统中运行的各redis实例该配置文件不要重名
cluster-config-file nodes-6379.conf
 
# 集群节点超时毫秒数
cluster-node-timeout 15000
 
# 如果数据太旧,集群中的不可用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
 
# 只有在之前master有其它指定数量的工作状态下的slave节点时,slave节点才能提升为master。默认为1
#(即该集群至少有3个节点,1 master+2 slaves,master宕机,仍有另外1个slave的情况下其中1个
# slave可以提升)
# 测试环境可设置为0,生成环境中至少设置为1
cluster-migration-barrier 1
 
# 默认情况下如果redis集群如果检测到至少有1个hash slot不可用,集群将停止查询数据。
# 如果所有slot恢复则集群自动恢复。
# 如果需要集群部分可用情况下仍可提供查询服务,设置为no。
cluster-require-full-coverage yes
 
# 选项设置为yes时,会阻止replicas尝试对其master在主故障期间进行故障转移
# 然而,master仍然可以执行手动故障转移,如果强制这样做的话。
cluster-replica-no-failover no

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值