文章目录
- 一、redis.conf配置文件详解
- 1.1 查看配置文件位置
- 1.2 启动需指定配置文件
- 1.3 单位大小写不敏感
- 1.4 引用其他配置文件(包含)
- 1.4.1 测试参数存放前后位置
- 1.4.1.1 反例
- 1.4.1.2 正例
- 1.4.2 测试引用参数有效性
- 1.5 网络相关
- 1.5.1 绑定IP
- 1.5.2 保护模式
- 1.5.3 默认端口
- 1.6 通用类
- 1.6.1 守护进程(后台运行)
- 1.6.2 pid文件
- 1.6.3 日志文件
- 1.6.4 数据库数量
- 1.6.5 日志logo显示
- 1.7 rdb持久化文件配置(快照模式)
- 1.7.1 rdb持久化规则
- 1.7.2 持久化错误时是否继续工作
- 1.7.3 rdb文件压缩
- 1.7.4 rdb文件校验
- 1.7.5 文件名称
- 1.7.6 持久化文件存放目录
- 1.8 安全类
- 1.8.1 设置密码
- 1.9 限制类
- 1.9.1 设置最大客户端连接数量
- 1.9.2 设置最大内存
- 1.9.3 内存达上限处理策略
- 1.10 aof持久化文件配置(仅追加模式)
- 1.10.1 开启与关闭
- 1.10.2 文件名称
- 1.10.3 aof持久化规则
- 1.11 主从复制类
- 1.11.1 连接master密码
一、redis.conf配置文件详解
1.1 查看配置文件位置
- redis配置文件为redis.conf,位于redis安装目录下。
- redis服务的启动也需要redis.conf配置文件的参与,可以从配置文件中获取多种功能用法。
- 在接手一台未知服务器,需要寻找redis的二进制安装路径时,可以使用whereis命令来查询。若采用docker方式安装,可以直接docker ps -a查看是否有redis容器运行。
1.2 启动需指定配置文件
- redis服务启动需要指定配置文件,读取配置文件里配置的各项参数。所以读取不同的参数效果不同。
- 比如/usr/local/redis/redis.conf配置文件参数不动,我把该文件cp到/opt/redis/目录下,修改/opt/redis/redis.conf配置文件的参数(设置密码,默认没有密码),在启动redis服务时指定/opt/redis/redis.conf这个配置文件,那么在用客户端连接服务端时,需要输入密码。反之,指定用默认的配置文件启动服务,则不需要输入密码就可以连接服务端。
1.3 单位大小写不敏感
- units(单位)。
- 这里说明了在配置内存大小时,指定的单位可以是大写、小写。并且支持的度量单位为bytes,不支持bit。
1.4 引用其他配置文件(包含)
- includes(包含)
- 这个参数的使用需要注意在配置文件里的位置,可以指定引用其他位置的配置文件。若被引用的配置文件里的参数与redis.conf里的参数有相同的,想要实现被引用配置文件里的参数则需要将include这一行放在redis.conf配置文件里同参数的后面,通俗得讲,就是读取redis.conf最后配置得值。
- 若先读取redis默认得配置文件启动后,需要使用include引用其他配置文件里相同的参数,则需要重启生效。
1.4.1 测试参数存放前后位置
在redis.conf配置文件有一个“tcp-keepalive 300”的参数,我现在不需要使用默认配置文件的这个参数配置,要引用其他配置文件里的这个参数值,例如我要引用/opt/backup/baidu.conf这个配置文件里的“tcp-keepalive 1000”参数值,则在redis.conf里“include /opt/backup/baidu.conf”这一行要放在“tcp-keepalive 300”后面,不然读取的还是300默认值。
1.4.1.1 反例
1、测试文件/opt/backup/baimu.conf,指定参数值为1000。
2、指定测试文件,绝对路径。此时默认配置“tcp-keepalive 300”一行在include下面
3、启动服务,查看结果
[root@localhost redis]# redis-server redis.conf
[root@localhost redis]# redis-cli -a wuhan@123
127.0.0.1:6379> config get tcp-keepalive #读取的还是默认配置300
1) "tcp-keepalive"
2) "300"
1.4.1.2 正例
4、此时我们把include一行放在“tcp-keepalive 300”后面。若之前退出没有shutdown,则需要重启服务才能生效。
5、重启服务,查看结果
[root@localhost redis]# redis-cli -a wuhan@123 shutdown
[root@localhost redis]# redis-server redis.conf
[root@localhost redis]# redis-cli -a wuhan@123
127.0.0.1:6379> config get tcp-keepalive #此时读取的是我们指定的配置文件参数1000。
1) "tcp-keepalive"
2) "1000"
1.4.2 测试引用参数有效性
被引用的配置文件里的参数不能随便命名,需能被redis读取使用。
1、之前我们的redis密码为wuhan@123,现在我们把redis.conf配置文件的密码配置一行注释掉,用include参数引用,应用/opt/qingjun.conf文件里的123456。
2、此时我们连接redis时,wuhan@123密码连接失败,123456可以连接成功。
1.5 网络相关
1.5.1 绑定IP
- bind 127.0.0.1 默认绑定的是本机,外部连接不了。
- 若外部要连接服务端,可以用通配符*,bind *
1.5.2 保护模式
protected-mode ,默认是开启状态,一般不需要修改,可以保证服务的安全性。
1.5.3 默认端口
port ,默认端口是6379。
1.6 通用类
1.6.1 守护进程(后台运行)
daemonize ,默认是no,为前台运行。终止会话,则服务停止运行。
- 后台运行
- 前台运行
1.6.2 pid文件
pidfile ,记录的是redis后台运行时生成的pid文件,里面只有一行,为redis进程ID。前台运行不产生该文件。
1.6.3 日志文件
logfile,默认为空,则将日志打印在屏幕上,不输出成文件。也可以指定文件位置,这样服务运行时智慧把日志输入到指定文件里。
- 指定日志文件
- 默认为空,不指定日志文件。
1.6.4 数据库数量
databases ,默认是16个,从第0个开始数起。
1.6.5 日志logo显示
always-show-logo,服务启动时显示logo。
- 默认是开启状态,通常不用更改。
- 若是前台运行,这个参数不管用,即使关闭,服务前台运行时也会打印LOGO。
- 开启,日志有LOGO输出。
- 关闭,日志不显示LOGO。
1.7 rdb持久化文件配置(快照模式)
1.7.1 rdb持久化规则
- save 900 1:表示900秒(15分钟)内,至少有1个key值发生改变(写操作,包括新增、修改和删除操作),则会触发bgsave,将内存中的数据以快照的方式写入到二进制文件中,保存在磁盘。
- save 300 10:表示300秒(5分钟)内,至少有10个key值发生改变(写操作,包括新增、修改和删除操作),则会触发bgsave,将内存中的数据以快照的方式写入到二进制文件中,保存在磁盘。
- save 60 10000:表示60秒(1分钟)内,至少有10000个key值发生改变(写操作,包括新增、修改和删除操作),则会触发bgsave,将内存中的数据以快照的方式写入到二进制文件中,保存在磁盘。
1.7.2 持久化错误时是否继续工作
stop-writes-on-bgsave-error,默认为yes,开启状态。
1.7.3 rdb文件压缩
rdbcompression,默认为yes,开启文件压缩redis会采用采用 LZF(压缩算法) 压缩,会消耗一定的CPU资源。若不开启,则会占用更多的磁盘空间。
1.7.4 rdb文件校验
rdbchecksum,默认yes开启状态,会校验rdb文件是否有损坏,会有大概10%的性能损耗。
1.7.5 文件名称
dbfilename,可以指定命名rdb文件的名称,默认为dump.rdb。
1.7.6 持久化文件存放目录
dir,默认存放当前目录,也就是redis.conf文件所在的同级目录。
1.8 安全类
1.8.1 设置密码
requirepass,默认为空没有密码。设置密码可以一定程度地保证生成环境的安全性。
- 用命令设置密码不会更改配置文件里的配置,但重启服务会失效。
1.9 限制类
1.9.1 设置最大客户端连接数量
maxclients,默认关闭状态,可以设置客户端地最大连接数,超过这个数值地第n+1个用户开始就连接不了服务端。
1.9.2 设置最大内存
maxmemory,默认没有设置,项目上一定要设置最大限制内存,不然会存在数据丢失地情况。
1.9.3 内存达上限处理策略
maxmemory policy,当使用内存超过上限的处理方式。
- volatile-lru:利用 LRU 算法移除设置过过期时间的 key。
- volatile-lfu :使用近似的LFU移除有过期设置的键。
- volatile-random:随机移除设置过过期时间的 key。
- allkeys-lfu:使用近似的LFU移除任何key。
- volatile-ttl:移除即将过期的 key,根据最近过期时间来删除(辅以 TTL)
- allkeys-lru:利用 LRU 算法移除任何 key。
- allkeys-random:随机移除任何 key。
- noeviction:不移除任何 key,只是返回一个写错误。
1.10 aof持久化文件配置(仅追加模式)
1.10.1 开启与关闭
appendonly,是否以appendonly模式作为持久化方式,默认使用的是rdb方式持久化,所以appendonly模式默认也是关闭状态。
1.10.2 文件名称
appendfilename,可以对aof持久化文件进行命名。
1.10.3 aof持久化规则
- appendfsync always:每写入一个命令,就调用一次 fsync 函数,将缓冲区里面的命令写入到硬盘。这种模式下,服务器出现故障,也不会丢失任何已经成功执行的命令数据,但是其执行速度较慢;
- appendfsync everysec(默认):每一秒调用一次 fsync 函数,将缓冲区里面的命令写入到硬盘。这种模式下,服务器出现故障,最多只丢失一秒钟内的执行的命令数据,通常都使用它作为 AOF 配置策略;
- appendfsync no:不主动调用 fsync 函数,因为Linux 系统的 fsync() 函数可以将指定文件的内容从内核缓存刷到硬盘中,所以这种由操作系统决定何时将缓存区里面的命令写入到硬盘的方式及其不安全。这种模式下,服务器遭遇意外停机时,丢失命令的数量是不确定的,所以这种策略,不确定性较大。
1.11 主从复制类
1.11.1 连接master密码
masterauth,当redis主机设置了redis密码时,redis从机连接master的密码。