三、Redis.conf 配置文件详细介绍

本文深入解析Redis配置文件redis.conf,涵盖网络、模块、持久化、主从复制、安全性和性能优化等方面,帮助读者理解并掌握Redis的高级设置,确保数据安全与服务稳定性。

在这里插入图片描述
上一篇博客我们介绍了如何安装Redis,在Redis的解压目录下有个很重要的配置文件 redis.conf (/opt/redis-6.2.5/目录下),关于Redis的很多功能的配置都在此文件中完成的。一般为了不破坏安装的文件,出厂默认配置最好不要去改,所以我们将此配置文件复制到 /etc/redis/目录下了。

[root@TR redis-6.2.5]# cp redis.conf /etc/redisConf
[root@TR redis-6.2.5]# cd /etc/redisConf
[root@TR redisConf]# ls
redis.conf
[root@TR redisConf]# vim redis.conf							# 查看配置文件

通过 vim /etc/redisConf/redis.conf 命令打开此文件。下面我们将详细介绍此配置文件。

1、开头说明

这里的配置很简单,需要注意的是后面需要使用内存大小时,可以指定单位,通常是以 k,gb,m的形式出现,并且单位不区分大小写

2、INCLUDES

我们知道Redis只有一个配置文件,如果多个人进行开发维护,那么就需要多个这样的配置文件,这时候多个配置文件就可以在此通过 include /path/to/local.conf 配置进来,而原本的 redis.conf 配置文件就作为一个总闸。

3、MODULES

自定义模块配置。通过这里的 loadmodule 配置将引入自定义模块来新增一些功能。

4、NETWORK(网络配置)

bind 127.0.0.1 					# 绑定的ip(默认是本机的回环地址)
protected-mode yes 				# 保护模式
port 6379 						# 默认端口(由于Redis是单线程模型,因此单机开多个Redis进程的时候会修改端口。)
timeout 0						# 置客户端连接时的超时时间,单位为秒。当客户端在这段时间内没有发出任何指令,
								# 那么关闭该连接。默认值为0,表示不关闭。

5、GENERAL(通用)

daemonize yes 						# 默认情况下,Redis不作为守护进程运行。需要开启的话,改为 yes
supervised no 						# 可通过upstart和systemd管理Redis守护进程
pidfile /var/run/redis_6379.pid 	# 以后台进程方式运行redis,则需要指定pid 文件
loglevel notice 					# 日志级别。可选项有:
									# debug(记录大量日志信息,适用于开发、测试阶段);
									# verbose(较多日志信息);
									# notice(适量日志信息,使用于生产环境);
									# warning(仅有部分重要、关键信息才会被记录)。
logfile "" 							# 日志文件的位置,当指定为空字符串时,为标准输出
databases 16 						# 设置数据库的数目。默认的数据库是DB 0
always-show-logo yes				# 是否总是显示logo

6、SNAPSHOTTING(快照)

# 900秒(15分钟)内至少1个key值改变(则进行数据库保存--持久化)
save 900 1
# 300秒(5分钟)内至少10个key值改变(则进行数据库保存--持久化)
save 300 10
# 60秒(1分钟)内至少10000个key值改变(则进行数据库保存--持久化)
save 60 10000
stop-writes-on-bgsave-error yes # 持久化出现错误后,是否依然进行继续进行工作
rdbcompression yes 		# 使用压缩rdb文件 yes:压缩,但是需要一些cpu的消耗。no:不压缩,需要更多的磁盘空间
rdbchecksum yes 		# 是否校验rdb文件,更有利于文件的容错性,但是在保存rdb文件的时候,会有大概10%的性能损耗
dbfilename dump.rdb 	# dbfilenamerdb文件名称
dir ./ 					# dir 数据目录,数据库的写入会在这个目录。rdb、aof文件也会写在这个目录

7、REPLICATION

replicaof: 在主从复制的值得时候, 用来配置主机地址的。

slave-serve-stale-data:默认值为yes。当一个 slave 与 master 失去联系,或者复制正在进行的时候,slave 可能会有两种表现:
 1) 如果为 yes ,slave 仍然会应答客户端请求,但返回的数据可能是过时,或者数据可能是空的在第一次同步的时候
 2) 如果为 no ,在你执行除了 info he salveof 之外的其他命令时,slave 都将返回一个 “SYNC with master in progress” 的错误

slave-read-only:配置Redis的Slave实例是否接受写操作,即Slave是否为只读Redis。默认值为yes。

repl-diskless-sync:主从数据复制是否使用无硬盘复制功能。默认值为no。

repl-diskless-sync-delay:当启用无硬盘备份,服务器等待一段时间后才会通过套接字向从站传送RDB文件,这个等待时间是可配置的。 这一点很重要,因为一旦传送开始,就不可能再为一个新到达的从站服务。从站则要排队等待下一次RDB传送。因此服务器等待一段 时间以期更多的从站到达。延迟时间以秒为单位,默认为5秒。要关掉这一功能,只需将它设置为0秒,传送会立即启动。默认值为5。

repl-disable-tcp-nodelay:同步之后是否禁用从站上的TCP_NODELAY 如果你选择yes,redis会使用较少量的TCP包和带宽向从站发送数据。但这会导致在从站增加一点数据的延时。 Linux内核默认配置情况下最多40毫秒的延时。如果选择no,从站的数据延时不会那么多,但备份需要的带宽相对较多。默认情况下我们将潜在因素优化,但在高负载情况下或者在主从站都跳的情况下,把它切换为yes是个好主意。默认值为no。

8、SECURITY(安全)

rename-command:命令重命名,对于一些危险命令例如:flushdb(清空数据库)、flushall(清空所有记录)、config(客户端连接后可配置服务器)、keys(客户端连接后可查看所有存在的键)。作为服务端redis-server,常常需要禁用以上命令来使得服务器更加安全。

requirepass:设置redis连接密码。比如: requirepass 123456 表示redis的连接密码为123456

警告:由于Redis速度非常快,外部用户最多可以尝试。每秒100万个密码。这意味着我们应该使用非常强的密码,否则很容易被破解。例如:MD5

9、CLIENTS

maxclients :设置客户端最大并发连接数,默认无限制,Redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件描述符数。如果设置 maxclients为0 。表示不作限制。当客户端连接数到达限制时,Redis会关闭新的连接并向客户端返回max number of clients reached错误信息。

10、APPEND ONLY MODE

(1).appendonly:默认redis使用的是rdb方式持久化,这种方式在许多应用中已经足够用了。但是redis如果中途宕机,会导致可能有几分钟的数据丢失。Append Only File是另一种持久化方式,可以提供更好的持久化特性。Redis会把每次写入的数据的命令都写入appendonly.aof文件,每次启动时Redis都会先把这个文件的数据读入内存里。默认值为no

(2).appendfilename :appendfilename AOF 文件名称

(3).appendfsync everysec:appendfsync aof持久化策略的配置。

  1. no表示不执行fsync,由操作系统保证数据同步到磁盘,速度最快。
  2. always表示每次写入都执行fsync,以保证数据同步到磁盘。
  3. everysec表示每秒执行一次fsync,可能会导致丢失这1s数据(默认)。

(4).no-appendfsync-on-rewrite:在aof重写或者写入rdb文件的时候,会执行大量IO,此时对于everysec和always的aof模式来说,执行fsync会造成阻塞过长时间,no-appendfsync-on-rewrite字段设置为默认设置为no。如果对延迟要求很高的应用,这个字段可以设置为yes,否则还是设置为no,这样对持久化特性来说这是更安全的选择。 设置为yes表示rewrite期间对新写操作不fsync,暂时存在内存中,等rewrite完成后再写入,默认为no,建议yes。Linux的默认fsync策略是30秒。可能丢失30秒数据。默认值为no。

(5).auto-aof-rewrite-percentage:默认值为100。aof自动重写配置,当目前aof文件大小超过上一次重写的aof文件大小的百分之多少进行重写,即当aof文件增长到一定大小的时候,Redis能够调用bgrewriteaof对日志文件进行重写。当前AOF文件大小是上次日志重写得到AOF文件大小的二倍(设置为100)时,自动启动新的日志重写过程。

(6).auto-aof-rewrite-min-size:64mb。设置允许重写的最小aof文件大小,避免了达到约定百分比但尺寸仍然很小的情况还要重写。

(7).aof-load-truncated:aof文件可能在尾部是不完整的,当redis启动的时候,aof文件的数据被载入内存。重启可能发生在redis所在的主机操作系统宕机后,尤其在ext4文件系统没有加上data=ordered选项,出现这种现象 redis宕机或者异常终止不会造成尾部不完整现象,可以选择让redis退出,或者导入尽可能多的数据。如果选择的是yes,当截断的aof文件被导入的时候,会自动发布一个log给客户端然后load。如果是no,用户必须手动redis-check-aof修复AOF文件才可以。默认值为 yes。

常见配置介绍

1、Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程

daemonize no

2、当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指

pidfile /var/run/redis.pid

3、指定Redis监听端口,默认端口为6379

port 6379

4、绑定的主机地址

bind 127.0.0.1

5、当客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能

timeout 300

6、指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose

loglevel verbose

7、日志记录方式,默认为标准输出,如果配置Redis为守护进程方式运行,而这里又配置为日志记录方式为标准输出,则日志将会发送给/dev/null

logfile stdout

8、设置数据库的数量,默认数据库为0,可以使用SELECT 命令在连接上指定数据库id

databases 16

9、指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合

Redis默认配置文件中提供了三个条件:
save 900 1
save 300 10
save 60 10000
分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改。

10、指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变的巨大

rdbcompression yes

11、指定本地数据库文件名,默认值为dump.rdb

dbfilename dump.rdb

12、指定本地数据库存放目录

dir ./

13、设置当本机为slav服务时,设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步

slaveof

14、当master服务设置了密码保护时,slav服务连接master的密码

masterauth

15、设置Redis连接密码,如果配置了连接密码,客户端在连接Redis时需要通过AUTH 命令提供密码,默认关闭

requirepass foobared

16、设置同一时间最大客户端连接数,默认无限制,Redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件描述符数,如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis会关闭新的连接并向客户端返回max number of clients reached错误信息

maxclients 128

17、指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理 后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis新的vm机制,会把Key存放内存,Value会存放在swap区。

maxmemory

18、指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为 redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为no

appendonly no

19、指定更新日志文件名,默认为appendonly.aof

appendfilename appendonly.aof

20、指定更新日志条件,共有3个可选值:

no:表示等操作系统进行数据缓存同步到磁盘(快)
always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全)
everysec:表示每秒同步一次(快,默认值)
appendfsync everysec

Redis 系列文章

Linux、windows 下安装Redis图文教程
一、为什么要是用Redis?
二、Redis五大数据类型详细讲解
三、Redis.conf 配置文件详细介绍
四、Redis 的持久化(RDB、AOF)
五、Redis事务的详细介绍
七、Redis 主从复制以及哨兵模式的详细图解
八、Sentinel.conf 配置文件详细介绍
九、Redis的缓存穿透和雪崩问题,以及解决方案
整理了一些关于 Redis的高频面试题【建议收藏】

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖太乙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值