Redis配置文件详解

178 阅读4分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情

配置方式

  • 通过命令行修改(临时性,常用于测试):./redis-server --port 6378,不影响redis.conf
  • 使用config set修改配置,用于临时修改,常用于测试,不影响redis.conf,但是可以使用 config rewrite 把当前redis服务正在使用的配置,回写到redis.conf文件中去,以保证redis.config和环境中使用的一致
  • 直接修改redis.conf文件,然后重启服务(建议使用)

如果仅仅用作缓存

作为缓存使用时,不用每一个key都设置过期时间,可以使用以下命令代替:

# 设置最大内存2MBit
maxmemory 2mb
# 内存满了之后,使用LRU策略删除key
maxmemory-policy allkeys-lru

配置导入

语法:include /path/to/other.conf
可以把标准配置定义为主配置文件,然后把针对每一个服务的特殊配置定义为特定文件,并通过include导入主配置文件,作为该服务的配置文件

如果允许用特殊配置文件中存在的配置,覆盖主配置文件中相同的配置,则需要把 include 放在 主配置文件后面

配置文件详解

bind

bind 127.0.0.1 -::1

用于明确允许链接redis服务的客户端IP地址。
如果不指定,默认允许所有客户端链接该redis服务,所以为了安全,还是明确比较好。
使用bind 127.0.0.1表示只允许本机访问。

如果你启动redis服务后,客户端无法连接,很有可能和这个配置有关。

protected-mode

protected-mode yes

启用保护模式。
如果protected-mode yes,则必须配置 bind和password,否则redis服务只允许本机访问,等效于bind 127.0.0.1效果。

所以除了测试环境,强烈建议该选项设置为 yes。

port

port 6379
配置服务监听的端口

tcp-backlog

tcp-backlog 511
linux系统内核存在两个队列:sync queue(default 512)和accept queue(default 128),如下图:

image.png

  • redis的该配置类似linux中的accept queue,用于保存完成三次握手的链接,默认511,一般该值设置大于linux的accept queue的。
  • 如果该redis服务并发很高,直接修改配置并不管用,因为会被linux中/proc/sys/net/core/somaxconn的值限定(即accept queue的大小),所以需要同时设定,建议把accept queue大小设置为2048

timeout

timeout 0
客户端链接后,闲置多久(单位秒)被关闭,如果设置0,表示禁用该设置。

tcp-keepalive

tcp-keepalive 300

客户端和服务端建立链接后,服务端为了试探客户端是不是还活着,会定时向客户端发送ACK报文,这个时间就是发送时间间隔,默认300s

关于tcp-keepalive的使用,挺有意思的,之前短连接的时候发完数据就断开了,谁也不干扰谁,后来有了长链接,很多时候客户端都关机睡觉了,服务端还傻傻的抓着链接不放,像极了萌芽中的爱情,导致服务器非常疲惫,因此有了这个机制,有兴趣可以研究一下。

daemonize

daemonize no

默认redis不是运行在守护进程下,如果开启需要把该配置为yes,redis会把pid文件写入到/var/run/redis.pid。

pidfile

pidfile /var/run/redis_6379.pid

修改pid文件的存放路径。

loglevel

loglevel notice

配置日志级别: ● debug:用户开发和测试,会记录大量的信息 ● verbose:比debug记录的信息会少很多 ● notice:记录在生产环境需要的日志信息(默认) ● warning:只记录非常重要的信息

logfile

logfile ""

用于指定日志文件路径。

syslog-enabled

syslog-enabled no

是否把日志记录到系统日志,yes表示记录,默认不记录。

databases

databases 16

配置支持数据库个数,默认16个。

save

save 3600 1

配置自动保存到本地的频率,该配置表示:3600s内有1个Key被修改,就会触发一次。

stop-writes-on-bgsave-error

stop-writes-on-bgsave-error yes

当RDB在持久化失败后,redis默认不再接收写请求,以此告诉用户redis持久化出现问题。

rdbcompression

rdbcompression yes

dump.rdb是否启动压缩功能。

dbfilename

dbfilename dump.rdb

dump.rdb文件名称。

dir

dir ./

dump.rdb文件的路径,和dbfilename dump.rdb组成完整的路径。

replicaof

replicaof 作为副本,配置主数据库的地址和端口。

masterauth

masterauth 配置主数据库的密码(如果存在的话)。