Redis配置文件`redis.conf`是Redis服务器的核心配置文件,它定义了Redis服务器的运行方式、安全性、性能优化以及数据持久化等关键设置。下面将详细解释配置文件中的各个配置项。
1. **daemonize**: `yes` 表示Redis将以守护进程的方式运行,即在后台运行而不与终端交互。`no`则表示在前台运行。
2. **pidfile**: 指定Redis服务器的进程ID文件路径,例如 `/var/run/redis/redis-server.pid`,用于监控和管理Redis进程。
3. **port**: Redis监听的端口号,默认为`6379`。更改此端口可以避免与其他服务冲突。
4. **bind**: 指定Redis服务器监听的IP地址。`127.0.0.1`意味着只允许本地连接,若要允许远程连接,应设置为`0.0.0.0`。
5. **timeout**: 连接超时时间,单位为秒。如果客户端在此时间内没有发送任何命令,Redis将关闭连接。
6. **loglevel**: 设置日志级别,可选`debug`、`verbose`、`notice`和`warning`。`notice`适合生产环境,提供关键信息;`debug`和`verbose`在开发和调试时更有用。
7. **logfile**: Redis的日志文件路径,例如 `/var/log/redis/redis-server.log`。关闭日志输出可设置为`""`。
8. **syslog-enabled**: 是否将日志输出到系统日志。`yes`表示开启,`no`表示关闭。
9. **databases**: 设置Redis支持的数据库数量,默认为16,可以通过DB索引来访问。
**快照方式 (Snapshotting)**
1. `save`: 用于配置数据持久化的触发条件,如`save 900 1`表示在900秒内有一个键变化就执行RDB快照。
2. **rdbcompression**: `yes`表示在保存RDB文件时进行数据压缩,以节省磁盘空间。
3. **dir**: RDB文件(`dump.rdb`)的存储目录,例如 `/var/lib/redis`。
**主从复制 (Replication)**
1. `slaveof`: 配置当前Redis实例作为从服务器,连接到指定的主服务器`<masterip>`和`<masterport>`。
2. **masterauth**: 当主服务器设置密码保护时,从服务器需要提供此认证密码。
3. **slave-serve-stale-data**: `yes`表示在与主服务器连接断开或同步期间,从服务器仍然响应客户端请求,`no`则不响应(除了`INFO`和`SLAVEOF`命令)。
**安全 (Security)**
1. **requirepass**: 设置Redis服务器的连接密码,用于身份验证。
**限制 (Limits)**
1. **maxclients**: 最大客户端连接数,`0`表示不限制。
2. **maxmemory**: 设置Redis的最大内存限制,超出该值时,根据`maxmemory-policy`进行内存清理。
3. **maxmemory-policy**: 内存清理策略,如`volatile-lru`表示只移除有过期时间的键,`noeviction`表示不移除任何键,写操作返回错误。
**附加模式 (Additional Features)**
1. **appendonly**: `yes`启用AOF(Append Only File)持久化,记录所有写操作,`no`则禁用。
2. **appendfilename**: AOF文件名,如`appendonly.aof`。
3. **appendfsync**: AOF持久化同步策略,`always`表示每次写操作都同步,`everysec`表示每秒同步一次,`no`表示不同步。
4. **no-appendfsync-on-rewrite**: 在AOF重写时是否同步,`no`表示不同步。
**虚拟内存 (Virtual Memory)**(Redis 4.0后已废弃)
1. **vm-enabled**: 是否启用虚拟内存,建议设置为`no`,因为实际效果并不理想。
以上只是`redis.conf`的部分配置项解释,实际配置文件包含更多设置,如事件通知、TCP套接字选项、脚本管理等,每个配置项都有其特定作用,根据实际需求调整可优化Redis服务器的性能和安全性。