提示:Redis 6.2.6版本
度量单位
注意:g和gb有区别,不区分大小写,1gb 1GB都是一样的。
引入其他配置文件
包含一个或多个其他配置文件。
根据从上到下的顺序,读取配置项,对同一个配置项多次设置,总是取最后配置的值
启动时加载模块
启动时加载模块。如果服务器无法加载模块,它将中止。可以使用多个loadmodule指令。
模块是redis4.0以上版本新增的特性,可以编写自己的扩展模块,加载进redis。
网路配置
-
bind
-
bind-source-addr
使用 “bind-source-addr” 可以配置一个特定的地址来绑定,这也会影响连接的路由。
-
protected-mode
保护模式:当开启保护模式且默认用户没有密码则只能接收本机本地访问
-
port
-
tcp-backlog
设置TCP的backlog,backlog队列总和=未完成三次握手队列+已经完成三次握手队列
在高并发环境下,需要一个高backlog值来避免慢客户端连接的问题
-
timeout
一个空闲的客户端维持多少秒会关闭,0表示关闭该功能
-
tcp-keepalive
在linux系统中,客户端发送的最后一个数据包与redis发送的第一个保活探测报文之间的时间间隔。单位是秒。
GENERAL 通用配置
-
daemonize 是否为后台进程(默认是no)
- pidfile 存放pid文件的位置,每个实例会产生一个不同的pid文件
-
loglevel 日志级别
debug:能设置的最高的日志级别,打印所有信息,包括debug信息。 verbose:打印除了debug日志之外的所有日志。 notice:打印除了debug和verbose级别的所有日志。 warning:仅打印非常重要的信息。
-
logfile 设置日志的文件输出路径
-
databases 默认16个数据库
-
save
由于Redis是基于内存的数据库,需要将数据由内存持久化到文件中: save 3600 1 意义:3600秒(一个小时),至少一次改变 300 100 300秒(5分钟),至少100次改变 60 10000 60秒。至少10000次改变
- stop-writes-on-bgsave-error持久化发生错误是否继续工作
-rdb文件
REPLICATION 主从复制相关配置
################################# REPLICATION #################################
# Master-Replica replication. Use replicaof to make a Redis instance a copy of
# another Redis server. A few things to understand ASAP about Redis replication.
#
# +------------------+ +---------------+
# | Master | ---> | Replica |
# | (receive writes) | | (exact copy) |
# +------------------+ +---------------+
#修改master主机的地址和ip
# replicaof <masterip> <masterport>
#配置从库连接主库master的密码
# masterauth <master-password>
# 当指定 "masteruser" 时,副本将使用新的 AUTH 形式对其主节点进行
# 认证: AUTH <username> <password>.
#在 6.0 以上版本,如果使用了 ACL 安全功能,只配置 masterauth 还不够。因为默认用户不能运行 #PSYNC 命令或者主从复制所需要的其他命令。这时候,最好配置一个专门用于主从复制的特殊用户
# masteruser <username>
#当 slave 节点与 master 失去连接,导致主从同步失败的时候
#yes,slave 节点可以继续处理客户端请求,但是数据可能是旧的
replica-serve-stale-data yes
# Since Redis 2.6 by default replicas are read-only.
#配置用于控制 slave 实例能否接收写指令,
#在 2.6 版本后默认配置为 yes,表示 slave 节点只处理读请求,如果为 no 则可读可写。
replica-read-only yes
#SYNC服务器对主服务的同步策略
# Replication SYNC strategy: disk or socket.
# 1) Disk-backed: The Redis master creates a new process that writes the RDB
# file on disk. Later the file is transferred by the parent
# process to the replicas incrementally.
# 2) Diskless: The Redis master creates a new process that directly writes the
# RDB file to replica sockets, without touching the disk at all.
#
repl-diskless-sync yes
#当启用diskless复制时,可以配置服务器等待的时间
repl-diskless-sync-delay 5
#如果是diskless传输,如果预期的最大副本数已连接,则可以在最大延时之前进行复制
#默认值为 0,意味着没有定义最大值,Redis 将等待整个延迟。
repl-diskless-sync-max-replicas 0
#RDB文件落在Slave磁盘上模式,通常情况下磁盘比网络慢,存储和加载RDB文件会增加复制时间,也会增加Master的复制写内存和Slave的缓冲区
# 无硬盘模式是测试阶段,因为直接从socket获取rdb数据会有一个问题,那就是需要拿到完整的rdb数据才可以进行同步,针对这个问题以下由几种方案
#disable 不使用 无硬盘方案
#on-empty-db 只有在完全安全才使用无硬盘
#swapdb 在解析socket的rdb数据时,将当前数据库的数据放到内存中,这样可以在复制的时候为客户端提供服务,但是可能会造成内存溢出
repl-diskless-load disabled
# 主站以预定的时间间隔向其副本发送 PING。可以用 repl_ping_replica_period 选项来改变这个时间间隔。
# 默认值是10秒
# repl-ping-replica-period 10
#超时时间
# repl-timeout 60
#延时通信
#no: 不禁用,Master的指令无论大小都及时发送给Slave,但是会增加网络带宽,合适主从网络环境良好的场景
#yes: 禁用,主从链接都是TCP链接,所以当网络环境一般的情况下,交给Linux内核对TCP数据包进行优化,也就是合并较小的TCP数据包从而节省带宽,默认发送时间间隔取决于Linux内核,一般40毫秒,适合跨机房部署的场景
repl-disable-tcp-nodelay no
# repl-backlog-size 1mb
# repl-backlog-ttl 3600
# 复制的优先级是一个整数,由 Redis 在 INFO 输出中公布。它被 Redis Sentinel 用来选择一个副本,
# 以便在主副本不再正常工作时将其提升为主副本。
#0 是一个特殊的优先级,Sentinel不会选择数值为0的Slave为Master
#Sentinel会优先选择数值低的Slave提升为Master
replica-priority 100
# propagation-error-behavior ignore
# replica-ignore-disk-write-errors no
# replica-announced yes
# min-replicas-to-write 3
# min-replicas-max-lag 10
# replica-announce-ip 5.5.5.5
# replica-announce-port 1234
安全配置
- 访问密码的查看、设置和取消。
requirepass foobared位置,在下面添加一行requirepass+你想要的设置的密码(注意前面不要留空格)
也可通过命令行去修改密码,
此方法修改的密码为临时密码,redis关闭后则失效,下次启动还需再次设置
- maxclients设置redis同时可以与多少个客户端进行连接
如果达到了此限制,redis则会拒绝新的连接请求,并且向这些连接请求方发出"max number of clients reached"作为回应
- maxmemory 设置redis可以使用的内存量。
一旦到达内存使用上限,redis将会试图移除内部数据,移除的规则可以通过MAXMEMORY POLICY来指定
AOF配置
appendonly no# 默认是不开启aof模式的,默认是使用rdb方式持久化的
appendfilename "appendonly.aof"指定aof文件名称
appenddirname "appendonlydir"指定aof文件的存储路径
# appendfsync always # 每次修改都会sync 消耗性能
appendfsync everysec# 每秒执行一次 sync 可能会丢失这一秒的数据
# appendfsync no# 不执行 sync ,这时候操作系统自己同步数据,速度最快