timeout
客户端超过多少秒空闲后关闭(0是禁止此功能),如果小于0启动失败
tcp-keepalive
用于检测tcp连接是否还存活,建议设置300(单位是秒),如果小于0启动失败
protected-mode
当设置为yes后,如果没有通过bind设置address以及没有设置password,那么redis只接受来loopback address 127.0.0.1和::1的连接和unix domain socket
port
制定监听端口(如果设置0,redis不会在tcp socket监听,如果设置小于0或者大于65535启动失败)
tcp-backlog
tcp监听队列长度,如果大于/proc/sys/net/core/somaxconn,会取/proc/sys/net/core/somaxconn的值,所以调高此值的时候应该关注/proc/sys/net/ipv4/tcp_max_syn_backlog和/proc/sys/net/core/somaxconn的值
如果小于0启动失败
bind
绑定网络接口,默认接受来自所有网络接口的连接
可以绑定多个,最多同时绑定16个
unixsocket
制定用于监听l连接的unix socket的路径,没有默认值
unixsocketperm
unixsocket path的权限,不能大于777
save
1 save 900 1 格式
在900秒内有1个key改变了则执行save
2 save "" 格式
之前的save 配置无效
dir
数据库存储的目录,必须是有效并且存在的目录
loglevel
日志级别,取值范围debug,verbose,notice,warning
logfile
日志文件名
always-show-logo
总是显示logo
syslog-enabled
启用写入日志到system logger
syslog-ident
syslog的identity
syslog-facility
syslog的facility,取值范围,user,local0-local7
databases
database数量,如果小于1则启动失败
include
加载其他配置文件
maxclients
同时最大的连接数,默认10000,如果小于1启动失败
maxmemory
最大使用内存,超过则触发内存策略
maxmemory-policy
取值范围
1 volatile-lru 在设置了过期的key中通过lfu算法查找key淘汰
2 volatile-lfu 在所有key中通过lru算法查找key淘汰
3 volatile-random 在设置了过期的key中随机查找key淘汰
4 volatile-ttl 最近要超时的key淘汰
5 allkeys-lru 所有key通过lru算法查找key淘汰
6 allkeys-lfu 所有key通过lfu算法查找key淘汰
7 allkeys-random 所有key随机查找key淘汰
8 noeviction 不淘汰,对于写操作返回错误
maxmemory-samples
lru,lfu会对这个数量的key进行检查,设置过高会消耗cpu,如果小于0则启动失败
proto-max-bulk-len
批量请求的大小限制
client-query-buffer-limit
客户端查询缓存大小限制,如果multi/exec 大可以考虑调节
lfu-log-factor
小于0则启动失败
lfu-decay-time
小于0则启动失败
slaveof/replicaof
配置主机复制的主ip和端口
replicaof ip port
repl-ping-slave-period/repl-ping-replica-period
从发给主的心跳周期,如果小于0则启动失败
repl-timeout
多少秒没收到心跳的响应认为超时,最好设置的比 repl-ping-slave-period/repl-ping-replica-period大
如果小于0则启动失败
repl-disable-tcp-nodelay
是否禁用tcp-nodelay,如果设置yes,会导致主从同步有40ms滞后(linux默认),如果no,则主从同步更及时
repl-diskless-sync
以往主从复制是生成rdb文件,然后传输给从节点,配置成yes后可以不进行写磁盘直接进行复制,适用于磁盘慢网络带宽大的场景
repl-diskless-sync-delay
让主节点等待更多从节点来同时复制,设置过小,复制时来的从节点必须等待下一次rdb transfer
单位秒,如果小于0则启动失败
repl-backlog-size
复制积压大小,解决复制过程中从节点重连后不需要full sync,这个值越大,那么从节点断开到重连的时间就可以更长
repl-backlog-ttl
复制积压的生命期,超过多长时间从节点还没重连,则释放内存
masterauth
主从复制的认证
slave-serve-stale-data/replica-serve-stale-data
默认yes
当从节点和主节点的连接断开或者复制正在进行中
设置yes,那么继续提供服务
设置no,那么返回sync with master in progress
slave-read-only/replica-read-only
配置从节点是否只读,但是配置的修改还是可以的
slave-ignore-maxmemory/replica-ignore-maxmemory
从节点是否忽略maxmemory配置,默认yes
rdbcompression
压缩string 对象,但是会消耗cpu,可以设置为no
rdbchecksum
是否检查rdbchecksum,默认yes,可以设置no
activerehashing
默认每1秒10次消耗1ms来做rehashing来释放内存,会增加请求的延时,如果你对延时敏感,则设置no,默认yes
lazyfree-lazy-eviction
默认no,那么redis是同步释放内存,也就是停止完成其他请求来做释放内存操作,如果遇到key复杂度很大时(0(n))的会增加请求延时
如果yes,那么则先删除dict中的key,然后把释放内存的任务提交给后台线程做
lazyfree-lazy-expire
默认no,那么redis是同步删除过期key,也就是停止完成其他请求来做删除过期key,如果遇到key复杂度很大时(0(n))的会增加请求延时
如果yes,把删除key的任务提交给后台线程做
lazyfree_lazy_server-del
默认no,那么redis是同步删除key,也就是停止完成其他请求来做删除key,如果遇到key复杂度很大时(0(n))的会增加请求延时
如果yes,那么则先删除dict中的key,然后把删除key的任务提交给后台线程做(如果key很小则暂时不删除,只是减少了引用)
slave-lazy-flush/replica-lazy-flush
默认no,那么redis是同步清空数据库,也就是停止完成其他请求来做清空数据库,如果遇到数据库很大会增加请求延时
如果yes,那么则新建dict等数据结构,然后把清空数据库提交给后台线程做
activedefrag
如果你遇到内存碎片的问题,那么设置为yes,默认no
daemonize
是否以守护进程运行,默认no
hash-max-ziplist-entries
hash中的项数量小于或等于这个值使用ziplist
超过这个值使用hash
dynamic-hz
设置yes,则根据客户端连接数可以自动调节hz
hz
调节可以让redis再空闲时间更多的做一些任务(如关闭超时客户端等)
appendonly
是否开启aof
appendfilename
aof文件名
no-appendfsync-on-rewrite
设置yes后,如果有保存的进程在执行,则不执行aof的appendfsync策略的fsync
appendfsync
执行fynsc的策略
取值范围:
1 everysec 每秒执行sync
2 always 等到下次执行beforeslee时执行fsync
3 no 不执行fsync
设置always往往比较影响性能,但是数据丢失的风险最低
一般推荐设置everysec
auto-aof-rewrite-percentage
相对于上次aof文件大小的增长百分比如果超过这个值,则重写aof
auto-aof-rewrite-min-size
自动重写aof文件的最小大小,比 auto-aof-rewrite-percentage优先级高
aof-rewrite-incremental-fsync
设置yes,则每32mb 执行fsync一次(增量式,避免一次性大写入导致的延时)
设置no,则一次性fsync
rdb-save-incremental-fsync
设置yes,则每32mb 执行fsync一次(增量式,避免一次性大写入导致的延时)
设置no,则一次性fsync
aof-load-truncated
加入aof文件被截断了
1 设置yes,redis可以启动并且显示日志告知这个信息
2 设置no,redis启动失败,显示错误
aof-use-rdb-preamble
aof前部分用rdb,后面保存时缓存的命令还是用aof格式
优点:保存和恢复更快
设置yes开启
requirepass
用于在客户端执行命令前,要求执行 auth password
pidfile
存储redis pid的文件,redis启动后创建,退出后删除
dbfilename
rdb文件名
active_defrag_threshold_upper
开启内存碎片整理的最小内存碎片百分比
小于0或者大于1000则启动失败
active_defrag_threshold_upper
内存碎片百分比超过这个值,则使用active-defrag-cycle-max
小于0或者大于1000则启动失败
active-defrag-ignore-bytes
开启内存碎片整理的最小内存碎片字节数
如果小于等于0则启动失败
active-defrag-cycle-max
最小努力cpu百分比,用来做内存碎片整理
如果小于1或者大于99则启动失败
active-defrag-cycle-min
最大努力cpu百分比,用来做内存碎片整理
如果小于1或者大于99则启动失败
active-defrag-max-scan-fields
用于主动的内存碎片整理的set/hash/zset/list 中的最大数量的项
如果小于1,启动失败
hash-max-ziplist-value
hash 中的项大小小于或等于这个值使用ziplist
超过这个值使用hash
stream-node-max-bytes
stream 的最大内存开销字节数
stream-node-max-entries
stream 的最大项数量
list-max-ziplist-size
负值表示节点大小
-5 每个list节点大小不能超过64 Kb
-4 每个list节点大小不能超过32 Kb
-3 每个list节点大小不能超过16 Kb
-2 每个list节点大小不能超过8 Kb
-1 每个list节点大小不能超过4 Kb
推荐-1,-2
正值表示节点数量
满足设置的值,则使用ziplist表示,节约内存
超过设置的值,则使用普通list
list-compress-depth
不压缩quicklist 距离首尾节点小于等于这个值的ziplist节点
默认首尾节点不压缩,
设置为1
head->next->...->prev->tail
不压缩next,prev,以此类推
0表示都不压缩
set-max-intset-entries
当set 的元素数量小于这个值且元素可以用int64范围的整型表示时,使用inset,节约内存
大于或者元素无法用int64范围的整型表示时用set表示
zset-max-ziplist-entries
当sorted set 的元素数量小于这个值时,使用ziplist,节约内存
大于这个值zset表示
zset-max-ziplist-value
当sorted set 的元素大小小于这个值时,使用ziplist,节约内存
大于这个值zser表示
hll-sparse-max-bytes
大于这个值,hyperloglog使用稠密结构
小于等于这个值,使用稀疏结构
大于16000无意义,建议设置3000
rename-command
重命名命令,建议重命名一些敏感的命令(如flushall,flushdb)
cluster-enabled
开启集群模式
cluster-config-file
集群配置文件名
cluster-announce-ip
集群的节点的汇报ip,防止nat
cluster-announce-port
集群的节点的汇报port,防止nat
cluster-announce-bus-port
集群的节点的汇报bus-port,防止nat
cluster-require-full-coverage
默认如果不是所有slot已经分配到节点,那么集群无法提供服务
设置为no,则可以提供服务
cluster-node-timeout
认为集群节点失效状态的时间
如果小于0则启动失败
cluster-migration-barrier
当存在孤立主节点后(没有从节点),其他从节点会迁移作为这个孤立的主节点的从节点(前提是这个从节点之前的主节点至少还有这个数额个从节点)
不建议设置为0
想禁用可以设置一个非常大的值
如果小于0则启动失败
cluster-slave-validity-factor
如果从节点和master距离上一次通信超过 (node-timeout * replica-validity-factor) + repl-ping-replica-period时间,则没有资格失效转移为master
如果小于0则启动失败
cluster-slave-no-failover/cluster-replica-no-failover
在主节点失效期间,从节点不允许对master失效转移
取值yes,no
lua-time-limit
lua脚本的最大执行时间,超过这个时间后,恢复客户端的查询错误
0或者负数则无限制
slowlog-log-slower-than
执行命令大于这个值计入慢日志
如果设置为0,则所有命令全部记录慢日志
单位毫秒
latency-monitor-threshold
为了收集可能导致延时的数据根源,redis延时监控系统在运行时会采样一些操作
通过 LATENCY命令 可以打印一些图样和获取一些报告
这个系统仅仅记录那个执行时间大于或等于通过latency-monitor-threshold配置来指定的
当设置为0时这个监控系统关闭
单位毫秒
slowlog-max-len
最大的慢日志条数,这个会占用内存的
可以通过slowlog reset来释放内存
可以通过slowlog len来查看当前条数
client-output-buffer-limit
0则无限制
格式client-output-buffer-limit <class> <hard limit> <soft limit> <soft seconds>
client-output-buffer达到hard limit或者保持超过soft limit 持续sof seconds则断开连接
class 分为3种
1 normal 普通客户端包裹monitor客户端
2 replica 从节点
2 pubsub 至少pubsub一个channel或者pattern的客户端
stop-writes-on-bgsave-error
basave错误后是否停止接受写请求
slave-priority/replica-priority
当master不在工作后,从节点提升为master的优先级,0则不会提升为master
越小优先级越高
slave-announce-ip/replica-announce-ip
从节点上报给master的自己ip,防止nat问题
slave-announce-port/replica-announce-port
从节点上报给master的自己port,防止nat问题
min-slaves-to-write
最少从节点数,不满足min-slaves-to-write个 低于min-slaves-max-lag/min-replicas-max-lag时间的从节点,master不在接受写请求
如果小于0则启动失败
默认0,也就是禁用状态
min-slaves-max-lag/min-replicas-max-lag
最大从节点的落后时间,不满足min-slaves-to-write个 低于这个时间的从节点,master不在接受写请求
如果小于0则启动失败
notify-keyspace-events
取值范围(可以多个一起)
K Keyspace events, published with keyspace@<db> prefix.
E Keyevent events, published with keyevent@<db> prefix.
g Generic commands (non-type specific) like DEL, EXPIRE, RENAME,
$ String commands
l List commands
s Set commands
h Hash commands
z Sorted set commands
x Expired events (events generated every time a key expires)
e Evicted events (events generated when a key is evicted for maxmemory)
A Alias for g$lshzxe , so that the "AKE" string means all the events.
supervised
默认no
supervised no - 没有监督互动
supervised upstart - 通过将Redis置于SIGSTOP模式来启动信号
supervised systemd - signal systemd将READY = 1写入$ NOTIFY_SOCKET
supervised auto - 检测upstart或systemd方法基于 UPSTART_JOB或NOTIFY_SOCKET环境变量
sentinel monitor
格式sentinel monitor <master-name> <ip> <redis-port> <quorum>
如sentinel monitor mymaster 127.0.0.1 6379 2
告知sentinel监控这个ip和redis-port端口的redis,当至少达到quorum数量的sentinel同意才认为他客观离线(O_DOWN)
sentinel down-after-milliseconds
格式sentinel down-after-milliseconds <master-name> <milliseconds>
附属的从节点或者sentinel和他超过milliseconds时间没有达到,则主观离线(S_DOWN)
sentinel failover-timeout
格式 sentinel failover-timeout <master-name> <milliseconds>
用在很多方面:
1 距离被一个给定的Sentiel对同一个master进行过failedover的上一次的时间是此设置值的2倍
2 从从节点根据sentinel当前配置复制一个错误的主节点到复制新的主节点的时间需要的时间(从sentinel检测到配置错误起计算)
3 取消一个在进行中但是还没有产生配置变化(slave of no one还没有被提升的从节点确认)的failover需要的时间
4 进行中的failover等待所有从节点 重新配置为新master的从节点的最大时间.然而 虽然在这个时间后所有从节点将被sentinel重新配置,但并不是指定的正确的parallel-syncs 过程
sentinel parallel-syncs
格式 sentinel parallel-syncs <master-name> <numreplicas>
制定多少个从节点可以在failover期间同时配置到新的主节点.如果你用从节点服务查询,那么使用一个较低的值来避免所有的从节点都不可达,切好此时他们在和主节点同步
sentinel notification-script
格式 sentinel notification-script <master-name> <script-path>
对任何生成的在WARNING 级别的sentinel 事件会调用这通知脚本(例如sdown,odown等)
这个脚本应该通过email,sms等其他消息系统通知系统管理员监控的redis系统有错
调用这个脚本带有2个参数,第一个是事件类型,第二个是事件描述
如果这个选项设置的话这个脚本必须存在
sentinel client-reconfig-script
格式sentinel client-reconfig-script <master-name> <script-path>
当主节点由于failover改变,一个脚本可以执行,用于执行通知客户端配置改变了主节点在不同地址的特定应用的任务。
下面的参数将传递给这个脚本
<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 用于和旧主节点和被选举的节点(当前主节点)通信的地址
这个脚本是可以被多次调用的
auth-pass
格式 sentinel auth-pass <master-name> <password>
设置用于和主节点以及从节点通信的密码.如果在监控redis实例中有密码的话是有用的
注意这个主节点密码同样用于从节点,所以给主节点和从节点实例设置不同的密码是不可能的
然后你可以拥有不开启认证的redis实例和需要认证的redis实例混合(只要需要密码的redis实例密码设置一样)
因为当认证关闭时,auth 命令将在redis实例中无效
SENTINEL rename-command
如 SENTINEL rename-command mymaster CONFIG GUESSME
有时,redis服务 有些sentinel工作正常需要的命令,重命名为猜不到的字符串.通常是在提供者提供redis作为服务而且不希望客户重新配置在管理员控制台外修改配置的场景中的config,slaveof,
在这个情况,告诉sentinel使用不同的命令名字而不是常规的是可能的.
sentinel announce-ip
格式 sentinel announce-ip <ip>
在nat环境下是有用的
sentinel announce-port
格式sentinel announce-port <port>
在nat环境下是有用的
sentinel deny-scripts-reconfig
格式sentinel deny-scripts-reconfig yes
默认sentinel set 在运行期是不能改变notification-script和 client-reconfig-script .
这个避免一些细小的安全问题,在这里客户端可以设置脚本为任何东西而且触发一个failover用于让这个程序执行