开启掘金成长之旅!这是我参与「掘金日新计划 · 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),如下图:
- 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 配置主数据库的密码(如果存在的话)。