首页 > 其他 > 详细

Redis配置文件详解

时间:2020-07-17 22:45:00      阅读:70      评论:0      收藏:0      [点我收藏+]

  注:redis版本为:6.0.5

  配置文件原文地址:https://raw.githubusercontent.com/redis/redis/6.0/redis.conf

  

# 如果要配置跟内存大小相关的参数是可以这样配置:
#
# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytes
#
# 这些单位都是大小写不敏感的.

################################## 包含 ###################################

包含一个或多个配置文件,通常include引入包含的配置,不能被"CONFIG REWRITE"重写。
另外,由于Redis总是根据最后一个出现的相同的配置项的值作为配置值,所以如果我们不
希望include的配置覆盖了当前文件的配置,那么请把include放在当前配置文件的前面。

# include /path/to/local.conf
# include /path/to/other.conf

################################## 模块 #####################################

用于启动时加载模块。如果服务器无法加载模块它将中止。可以使用多个loadmodule指令。

# loadmodule /path/to/my_module.so
# loadmodule /path/to/other_module.so

################################## 网络 #####################################

默认情况下,如果你没有显式的指定bind参数,那么Redis将只接受服务器本地回环的连接
如果你想监听网络上其它IP的连接,也可以像下面这样配置一个或多个IP地址。
#
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1 ::1
#
警告 如果要接受网络上所有机器的连接,可以配置成bind 0.0.0.0, 这样Redis就会接受
所有IPv4地址的连接请求。在实际应用中,这样是十分不安全的,不推荐这么做。
bind 127.0.0.1

这是一层安全保护,默认情况下是yes,外部网络无法访问当前redis,通常我们会在配置好
bind的IP地址及访问密码(后面的requirepass参数)之后,会将它重新设置主no。这要外部
网络就可以访问当前Redis了。
protected-mode yes

指定redis的监听端口,默认端口是6379
port 6379

此参数确定了TCP连接中已完成队列(完成三次握手之后)的长度, 当然此值必须不大于Linux
系统定义的/proc/sys/net/core/somaxconn值,默认是511。而Linux的默认参数值是128,当系统并
发量大并且客户端速度缓慢的时候,建议修改值大于511。
tcp-backlog 511


指定unix socket目录
# unixsocket /tmp/redis.sock

指定unix socket file的权限
# unixsocketperm 700

链接空闲了多少秒之后会被链接,也就是超时时间,0的话就表示永不超时
timeout 0

每隔多少秒向客户端发送ACKs来检测客户端是否还存活着
tcp-keepalive 300

################################# 套接字安全 #####################################

这部分都是SSL相关的配置,默认不开启SSL,读者有兴趣自己了解一下
# port 0
# tls-port 6379
# tls-cert-file redis.crt
# tls-key-file redis.key
# tls-dh-params-file redis.dh
# tls-ca-cert-file ca.crt
# tls-ca-cert-dir /etc/ssl/certs
# tls-auth-clients no
# tls-replication yes
# tls-cluster yes
# tls-protocols "TLSv1.2 TLSv1.3"
# tls-ciphers DEFAULT:!MEDIUM
# tls-ciphersuites TLS_CHACHA20_POLY1305_SHA256
# tls-prefer-server-ciphers yes

################################# 通用 #####################################

默认情况下,Redis不会以守护进程的方式运行,如果你想以守护进程运行Redis,你可以设置为yes
如果你以守护进程的方式运行Redis,那么Redis将会创建一个pid文件/var/run/redis.pid
daemonize no

可以通过upstart和systemd管理Redis守护进程,这个参数是和具体的操作系统相关的,它可以
配置的值有:no、upstart、systemd或auto。
supervised no

以守护进程方式运行Redis时,pid文件配置,默认是:/var/run/redis.pid
pidfile /var/run/redis_6379.pid

日志记录等级,有4个可选值,debug(开发),verbose(默认值),notice(生产),warning(警告)
loglevel notice

日志文件的位置,当指定为空字符串时,为标准输出,如果redis已守护进程模式运行,那么日志将会
输出到/dev/null,若指定了路径,日志将会输出到指定文件,默认值是""
logfile ""

是否把日志记录到系统日志,默认是no
# syslog-enabled no

指定syslog里的日志标识,默认是redis
# syslog-ident redis

指定syslog设备(facility),必须是user或则local0到local7
# syslog-facility local0

指定数据库数量,默认是16
databases 16

是否展示ASCII码logo,默认yes
always-show-logo yes

################################ 快照 ################################
多少秒保存数据到磁盘,格式是:save <seconds> <changes>。意思是至少有changes条key数据被改变时,
seconds秒保存到磁盘。

默认配置:
save 900 1
save 300 10
save 60 10000

默认情况下,如果 redis 最后一次的后台保存失败,redis 将停止接受写操作,这样以一种强硬的方式让
用户知道数据不能正确的持久化到磁盘, 否则就会没人注意到灾难的发生。 如果后台保存进程重新启动
工作了,redis 也将自动的允许写操作。默认值是yes
stop-writes-on-bgsave-error yes

当dump rdb数据库的时候,要不要进行压缩,如果你想节约CPU资源,可以设置为no,但那样的话,rdb数据
集将很大。默认是yes。
rdbcompression yes

从Redis5之后,一个CRC64校验和就被存在rdb文件的尾部,校验可以确认rdb文件的完整性,但是
它会占用10%左右的保存或加载rdb文件的资源,如果你为了让性能最大化,你可以设置为no,默认是true。
rdbchecksum yes

指定rdb文件的名称,默认是dump.rdb
dbfilename dump.rdb

在没有持久性的情况下删除复制中使用的RDB文件,通常情况下保持默认即可。
rdb-del-sync-files no

本地数据库存放路径,默认值为./
dir ./

 

################################# 主从复制 #################################

如果当前服务器为slave,那么这里配置的就是master的ip和端口,如:192.168.1.2 6379
# replicaof <masterip> <masterport>

如果当前服务器为slave,那么这里配置的就是master的访问密码
# masterauth <master-password>

如果当前服务器为slave,那么这里配置的就是master的用户名
# masteruser <username>

当slave失去与master的连接,或正在拷贝中,如果为yes,slave会响应客户端的请求,
数据可能不同步甚至没有数据,如果为no,slave会返回错误"SYNC with master in progress"
replica-serve-stale-data yes

如果当前服务器为slave,这里配置slave是否只读,默认为yes,如果为no的话,就是可读可写。
replica-read-only yes

新的从站和重连后不能继续备份的从站,需要做所谓的“完全备份”,即将一个RDB文件从主站传送到从站。
这个传送有以下两种方式:
硬盘备份:redis主站创建一个新的进程,用于把RDB文件写到硬盘上。过一会儿,其父进程递增地将文件传送给从站。
无硬盘备份:redis主站创建一个新的进程,子进程直接把RDB文件写到从站的套接字,不需要用到硬盘。
在硬盘备份的情况下,主站的子进程生成RDB文件。一旦生成,多个从站可以立即排成队列使用主站的RDB文件。
在无硬盘备份的情况下,一次RDB传送开始,新的从站到达后,需要等待现在的传送结束,才能开启新的传送。
如果使用无硬盘备份,主站会在开始传送之间等待一段时间(可配置,以秒为单位),希望等待多个子站到达后并行传送。
在硬盘低速而网络高速(高带宽)情况下,无硬盘备份更好。
repl-diskless-sync no

无盘复制延时开始秒数,默认是5秒,意思是当PSYNC触发的时候,master延时多少秒开始向master传送数据流,
以便等待更多的slave连接可以同时传送数据流,因为一旦PSYNC开始后,如果有新的slave连接master,只能等待
下次PSYNC。可以配置为0取消等待,立即开始。
repl-diskless-sync-delay 5

是否使用无磁盘加载,有三项:
disabled:不要使用无磁盘加载,先将rdb文件存储到磁盘
on-empty-db:只有在完全安全的情况下才使用无磁盘加载
swapdb:解析时在RAM中保留当前db内容的副本,直接从套接字获取数据。
repl-diskless-load disabled

这里指定slave定期向master进行心跳检测的周期,默认10秒
# repl-ping-replica-period 10

对master进行心跳检测超时时间,默认60秒
# repl-timeout 60

在slave和master同步后(发送psync/sync),后续的同步是否设置成TCP_NODELAY . 假如设置成yes,
则redis会合并小的TCP包从而节省带宽,但会增加同步延迟(40ms),造成master与slave数据不一致
假如设置成no,则redis master会立即发送同步数据,没有延迟。
repl-disable-tcp-nodelay no

设置主从复制backlog容量大小。这个 backlog 是一个用来在 slaves 被断开连接时存放slave数据的buffer,
所以当一个 slave 想要重新连接,通常不希望全部重新同步,只是部分同步就够了,仅仅传递 slave 在断
开连接时丢失的这部分数据。这个值越大,salve 可以断开连接的时间就越长。
# repl-backlog-size 1mb

配置当master和slave失去联系多少秒之后,清空backlog释放空间。当配置成0时,表示永远不清空。
# repl-backlog-ttl 3600

当 master 不能正常工作的时候,Redis Sentinel 会从 slaves 中选出一个新的 master,这个值越小,就越会被优先选中,
但是如果是0,那是意味着这个slave不可能被选中。 默认优先级为100。
replica-priority 100

假如主redis发现有超过M个从redis的连接延时大于N秒,那么主redis就停止接受外来的写请求。这是
因为从redis一般会每秒钟都向主redis发出PING,而主redis会记录每一个从redis最近一次发来PING的
时间点,所以主redis能够了解每一个从redis的运行情况。上面这个例子表示,假如有大于等于3个从
redis的连接延迟大于10秒,那么主redis就不再接受外部的写请求。上述两个配置中有一个被置为0,
则这个特性将被关闭。默认情况下min-replicas-to-write为0,而min-replicas-max-lag为10。
# min-replicas-to-write 3
# min-replicas-max-lag 10


常用于端口转发或NAT场景下,对Master暴露真实IP和端口信息。
# replica-announce-ip 5.5.5.5
# replica-announce-port 1234

 

############################### 键的追踪 #################################

在使用了客户端缓存(什么是客户端缓存:https://redis.io/topics/client-side-caching)的时候
这里配置要追踪的key的数量,如果配置为0,则表示要追踪的key的数量不受限制
# tracking-table-max-keys 1000000

################################## 安全 ###################################

ACL日志的最大长度,默认是128M。关于acl,详见:https://redis.io/topics/acl
acllog-max-len 128

ACL外部配置文件所在位置
# aclfile /etc/redis/users.acl

当前redis服务的访问密码,默认是不需要密码
# requirepass foobared

################################### 客户端 ####################################

客户端最大连接数配置默认是10000。
# maxclients 10000

 

注:本文尚未完成,待续。。。

Redis配置文件详解

原文:https://www.cnblogs.com/lhrogerluo/p/13332777.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!