0 说明
这次学习的是redis配置文件的一部分,解读redis配置文件中的常用配置。
安装redis的教程地址:https://blog.csdn.net/hrjyc/article/details/88868535
1 Redis配置文件
Redis配置文件位于redis安装目录下面的redis.conf。这个文件当中对应着很多可以进行配置的项,如果不指定这个配置文件启动,那么redis就是以默认的配置启动,我们可以指定使用配置文件启动redis。
进入redis安装目录,执行./src/redis-server ./redis.conf命令。
2 Redis常用配置
配置文件当中大部分是注释,我们可以用vim打开,查看其中的内容,对应的注释就是对应这个配置项的解释。下面选取几种常用的配置项进行说明:
1. bind 127.0.0.1
绑定的redis服务的主机地址。
2. port 6379
redis服务的监听的端口号,默认是6379,如果设置成0则代表不监听任何socket端口。
3. protected-mode
Redis服务的保护模式,保护模式下,只能允许127.0.0.1 and ::1这种本地访问,配置默认为开启状态protected-mode yes。这里要注意保护模式的生效条件。该模式在bind被注释掉和没有配置访问密码的时候才生效。一般可让其为开启状态,同时配置访问密码,来实现Redis的服务安全性。
4. timeout 0
当客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能。
5. daemonize no
redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程。这样就可以以后台守护进程的方式运行redis服务。
6. pidfile /var/run/redis_6379.pid
当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定。
7. loglevel notice
指定日志的级别,notice意思是可以适用于生产环境。其余的级别还有debug (适用于开发或测试阶段,信息很多)、verbose (包含很多不太有用的信息,但比debug要清爽一些)、notice (适用于生产环境)、warning (仅仅一些重要的消息被记录)。
8. logfile ""
日志文件存放的位置。
9. databases 16
设置数据库的数量,默认数据库为第0个,可以使用SELECT <dbid>命令在连接上指定数据库id。
10. save <seconds> <changes>
指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合
Redis中默认的如下:
save 900 1
save 300 10
save 60 10000
900 秒内如果至少有 1 个 key 的值变化,则保存。
300 秒内如果至少有 10 个 key 的值变化,则保存。
60 秒内如果至少有 10000 个 key 的值变化,则保存。
11. rdbcompression yes
指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变的巨大。
12. dbfilename dump.rdb
指定本地数据库文件名,默认值为dump.rdb。
13. dir ./
指定本地数据库存放目录。
14. appendonly no
指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为 redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为no。
15. appendfilename "appendonly.aof"
指定更新日志文件名,默认为appendonly.aof。
3 Redis主从结构配置
主从模式,可以是树状的,从服务属于多台主服务,且从服务也可以有从服务。主从模式,可实现读写分离;高可用模式下,主服务出现问题,也可以通过哨兵切换从服务为主服务;可实现主服务不用数据持久化,从服务进行持久化工作,减轻主服务负担等等。
1. replicaof <masterip> <masterport>
配置主服务的ip和端口。
2. masterauth <master-password>
如果主服务需要密码认证,这里需要配置从服务连接主服务的密码。
3. replica-serve-stale-data yes
当一个slave失去和master的连接,或者同步正在进行中,slave的行为有两种可能:1) 如果 replica-serve-stale-data 设置为 "yes" (默认值),slave会继续响应客户端请求,可能是正常数据,也可能是还没获得值的空数据。2) 如果 replica-serve-stale-data 设置为 "no",slave会回复"正在从master同步"来处理各种请求,除了 INFO 和 SLAVEOF 命令。
4. replica-read-only yes
默认为yes,配置从服务默认为只读模式。