本文介绍Redis的配置文件以及持久化策略。
1. 配置文件
Redis在安装好之后,其安装根目录下会有一个配置文件redis.conf
,该配置文件。这个文件配置了Redis服务端运行时的一些参数,如端口号、IP地址等等。Redis在启动的时候可以指定配置文件,也可以不指定按照默认的参数运行。
1.1 Redis配置文件中的网络配置
port:指定redis服务所监听使用的端口,默认使用6379。
bind:客户端链接redis服务时,所能使用的ip地址,默认可以使用redis所在主机任何网卡的IP地址。(实际开发中,一般情况下,都会配置一个特定的IP,只能使用通过该IP连接redis服务。)
tcp-keepalive:TCP连接保活策略,即每隔多长时间服务器向主机发送一次ACK请求,判断其是否还在使用Redis服务,如果不使用,则会主动断开连接。因为如果连接上但不使用,这是很浪费服务器资源的。一般情况下,服务器的连接数量是一个很重要的服务指标,该资源很重要。
1.2 Redis配置文件中的常规配置(了解)
loglevel:配置日志级别。因为Redis作为一个软件,其运行过程中肯定需要记录一些突发事件,如启动、关闭、报错等等。因此需要打印日志,也就需要对日志设置级别。比如启动时控制台输出的一些内容,这就是日志。默认级别是notice。所有的级别有:debug、verbose、notice、warning。
logfile:指定日志文件。即设置日志的保存文件位置。默认情况下没有配置文件,即会输出到控制台中。
databases:设置数据库实例的数量,默认为16个。
1.3 Redis配置文件中的安全配置(了解)
我们知道,Redis可以直接通过IP和端口来连接,即不需要用户名和密码。这是因为Redis追求高效性,因此默认对安全性要求不是很高,因为如果设置密码了,每次执行命令都需要验证,效率较低。但是Redis提供了密码服务(没有用户名)。
在配置文件中的requirepass 密码
字段,该字段已经被注释掉了,即默认不需要密码来连接。但是该字段在解除注释后,仍然需要protected-mode=yes时才会起作用。使用密码连接redis服务:redis-cli -h ip -p port -a 密码
。
一般情况下,为了追求高效性,对安全性要求不高,这两个字段不做要求使用。
2. 持久化策略(了解)
前面提到过,Redis也被称为内存数据库,它把数据存储在内存中,这样加快了读取速度,但是也对数据安全性产生了新的问题,即Redis所在主机宕机后,Redis数据库所有的数据将会全部消失(内存断电,不会永久保存数据)。为了解决这个问题,redis提供了持久化策略,即在适当的时机采用适当的手段将内存中的数据存储到硬盘中。Redis服务重启的时候可以再次加载磁盘中的数据到内存中。提供如下两个策略:
- RDB策略(默认开启):在指定时间间隔内,redis服务每执行指定次数的写操作,会自动触发一次写操作(将这些刚刚写入内存的数据同步到磁盘中)。默认是:一分钟改了一万次;或者5分钟改变了10次;或者15分钟内改变了1次。RDB策略存在一定的缺陷,比如刚刚写完一条数据就宕机了,还没有到达15分钟就宕机了,这是不合理的
- AOF策略:采用操作日志来记录每一次写操作命令,即每执行一次写操作都会被记录下来。在重启的时候会读取这个文件,重新执行里面的命令,从而达到回复数据的目的。(效率较低,日志文件属于磁盘文件,IO开销太大。)
可根据数据的特点决定开启哪种持久化策略,一般情况下第一种策略就足够了。一般情况下,Redis作为缓存数据库,都是从其他关系数据库中抽取出来经常使用的数据,存储到Redis中,然后供程序使用。所以关系型数据库都是备份了数据的。
2.1 Redis配置文件中的RDB配置
在配置文件中,设置了save <seconds> <changes>
,即seconds是时间段,changes是写入次数。
dbfilename
字段用于设置持久化数据存储文件的文件名,默认是dump.rdb
。(这个文件,redis在启动的时候,会加载到内存中。所以迁移数据库的时候,就是迁移的这些文件。)
dir
字段用于设置持久化数据生成文件保存的目录,默认是redis的安装目录。
RDB的全称是Redis DataBase Backup file,即Redis数据备份文件。
2.2 Redis配置文件中的AOF配置
appendonly
字段用于设置是否开启AOF策略,默认是关闭的。
appendonlufilename 文件名
字段用于设置日志文件名。
AOF的全称是Append Only File,即追加写操作命令。
3. 备注
参考B站《动力节点》。