Redis配置文件
基本配置
#指定接收的IP请求,不设置表示接收所有IP的请求。
#内网可不配置,外网建议配置接收IP 多个IP空格分割
bind 127.0.0.1
#redis3.2之后加入的新特性,是否开启保护模式,默认开启(yes),关闭(no)。
#在没有设置bind、IP和密码的时候只允许访问127.0.0.1(即本地访问)。
protected-mode yes
#redis监听的端口号
port 6379
#三次握手的时候server端收到client的ack确认号之后的队列值,默认不需要改,默认是511。
#Linux系统定义的/proc/sys/net/core/somaxconn值默认值511;Linux的默认参数值是128。
#对于负载很大的服务程序来说一般会将它修改为2048或者更大。在/etc/sysctl.conf中添加:net.core.somaxconn = 2048,然后在终端中执行sysctl -p。
tcp-backlog 511
#客户端和Redis服务端的连接超时时间,默认是0,表示永不超时。
timeout 0
#tcp会话保持时间
tcp-keepalive 300
#是否在后台执行,yes:后台运行;no:不是后台运行。
#默认情况下redis不是作为守护进程运行在后台运行,你就把它改成yes, 当redis作为守护进程运行的时候,它会写一个pid到/var/run/redis.pid文件里面,需要改为yes,进行后端运行。
daemonize yes
#redis的进程文件
pidfile /var/run/redis/redis.pid
#操作系统相关参数可以设置通过upstart和systemd管理Redis守护进程centos7以后都使用systemd
supervised systemd
#指定了服务端日志的级别。
#级别包括:debug(很多信息,方便开发、测试),verbose(许多有用的信息,但是没有debug级别信息多),notice(适当的日志级别,适合生产环境),warn(只有非常重要的信息)
loglevel notice
#指定了记录日志的文件。空字符串的话,日志会打印到标准输出设备。后台运行的redis标准输出是/dev/null
logfile /usr/local/redis/var/redis.log
#数据库数量
databases 16
快照配置
# 在启动 redis 时是否 显示 log
always-show-logo yes
# 在900 秒内有一个键内容发生更改触发快照机制
save 900 1
# 在300 秒内有10个键内容发生更改触发快照机制
save 300 10
# 在60 秒内有10000个键内容发生更改触发快照机制
save 60 10000
#快照出错时,是否禁止redis写入操作
stop-writes-on-bgsave-error no
# 持久化到 RDB 文件时,是否压缩,"yes" 为压缩,“no” 则反之
rdbcompression yes
#是否开启RC64校验,默认是开启
rdbchecksum yes
# 快照文件名
dbfilename dump.rdb
# 快照文件保存路径
dir /usr/local/redis/var
复制选项
#配置master的密码,这样可以在连上master后进行认证
masterauth <master-password>
# 当从库同主库失去连接或者复制正在进行,从机库有两种运行方式:
1) 如果 replica serve stale data 设置为 yes( 默认设置 )),从库会继续响应客户端的 读 请求。
2) 如果 replicaserve stale data 设置为 no ,除 去指定的命令之外的任何请求都会返回一个错误 "SYNC with master in progress" 。
replica-serve-stale-data yes
# 是否设置从库只读
replica-read-only yes
#是否使用 socket 方式复制数据, 目前 redis 复制提供两种方式, disk 和 socket 如果新的 slave 连上来或者重连的 slave 无法部分同步,就会执行全量同步, master 会生成 rdb 文件,有2 种方式:
#1)disk 方式是 master 创建一个新的进程把 rdb 文件保存到磁盘,再把磁盘上的 rdb 文件传递给 slave socket 是master 创建一个新的进程,直接把 rdb 文件以 socket 的方式发给 slave disk 方式的时候,当一个 rdb 保存的过程中,多个 slave 都能共享这个 rdb 文件。
#2)socket 的方式就是 一个个 slave顺序复制, 只有在磁盘速度缓慢但是 网络相对较 快的情况下才使用 socket 方式,否则使用默认的disk方式。
repl-diskless-sync no
#diskless 复制的延迟时间, 设置 0为关闭 一旦复制开始还没有结束之前,master 节点不会再接收新 slave 的复制请求, 直到下一次开始。
repl-diskless-sync-delay 30
#slave 根据 master 指定 的时间进行周期性的 PING 监测
repl-ping-slave-period 10
#复制链接超时时间,需要大于 repl ping slave period 否则会 经常 报超时
repl-timeout 60
#在 socket 模式下是否在slave 套接字发送 SYNC之后禁用TCP_NODELAY
#如果你选择“yes Redis 将使用更少的 TCP 包和带宽来向 slaves 发送数据。但是这 将使数据传输到 slave上有延迟Linux 内核的默认配置会达到 40毫秒,
#如果你选择了 "no" 数据传输到 salve 的延迟将会减少但要使用更多的带宽。
repl-disable-tcp-nodelay no
# 复制缓冲区大小, 只有在 slave 连接之后 才 分配内存 。
repl-backlog-size 1mb
# 多次时间 master 没有 slave 连接,就清空 backlog 缓冲区 。
repl-backlog-ttl 3600
#当 master 不可用,Sentinel 会根据 slave 的优先级选举一个 master 。最低的优先级的 slave ,当选 master 。而配置成 0,永远不会被选举。
replica-priority 100
安全
#requirepass配置可以让用户使用AUTH命令来认证密码,才能使用其他命令。这让redis可以使用在不受信任的。 网络中。为了保持向后的兼容性,可以注释该命令,因为大部分用户也不需要认证。使用requirepass的时候需要注意,因为redis太快了,每秒可以认证15w次密码,简单的密码很容易被攻破,所以最好使用一个更复杂的密码
requirepass foobared
#把危险的命令给修改成其他名称。比如CONFIG命令可以重命名为一个很难被猜到的命令,这样用户不能使用,而 内部工具还能接着使用
rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
#设置成一个空的值,可以禁止一个命令
rename-command CONFIG ""