简介: redis.conf 是 R
目录
0.前言
1.Redis 配置说明
1.1通用设置
1.1连接设置
1.1通信协议设置
1.1通用配置项
1.1快照配置项
1.1AOF 配置项
1.1主从复制配置项
1.1Sentinel 配置项
2.redis.conf
3.附加配置
3.1. always-show-logo
3.2. hz
3.3. include
3.4. lua-time-limit
3.5. repl-backlog-size
3.6. repl-diskless-sync
3.7. repl-ping-slave-period
3.8. repl-timeout
3.9. appendonly
3.10. appendfilename
3.11. appendfsync
3.12. save
3.13. rdbcompression
3.14. maxmemory-policy
3.15. client-output-buffer-limit
3.16. notify-keyspace-events
4.总结
4.1. 合理设置内存限制
4.2. 合理设置快照和 AOF 配置项
4.3 设置合理的最大连接数
4.4. 安全设置
4.5. 定期备份
4.6. 监控和调优
小结
edis 的配置文件,用于配置 Redis 实例的各种参数和选项。Redis 实例启动时会读取该配置文件,并按照文件中的配置参数进行初始化。 - 通用设置:如是否以守护进程方式运行 Redis、监听的端口号、监听的地址等。 - 连接设置:如客户端连接超时时间、是否开启 TCP keepalive 等。 - 通信协议设置:如 TCP listen() 函数的等待队列长度、Unix 套接字文件路径等。 - 通用配置项:如日志记录级别、日志文件路径、Redis 数据库数量等。 - 快照配置项:如触发快照保存的条件、快照保存出错时是否停止写入操作等。
redis.conf 是 Redis 的配置文件,用于配置 Redis 实例的各种参数和选项。Redis 实例启动时会读取该配置文件,并按照文件中的配置参数进行初始化。
Redis 的配置文件包含了众多的选项,涵盖了各个方面,包括但不限于:
通过修改 Redis 的配置文件,可以调整 Redis 的行为和性能,以更好地满足不同的业务需求。需要注意的是,修改配置文件后,需要重启 Redis 实例才能使新的配置生效。有的配置,可以通过redis命令及时生效,但是配置只存放与当前实例的内存中,重启后丢失。如果要持久化配置,必须修改配置文件。
daemonize no # 是否以守护进程方式运行 Redis
pidfile /var/run/redis_6379.pid # Redis 进程 ID 文件路径
port 6379 # Redis 监听的端口号
bind 127.0.0.1 # Redis 监听的地址(默认为本地回环地址)
timeout 0 # Redis 客户端连接超时时间
tcp-keepalive 0 # 是否开启 TCP keepalive
tcp-backlog 511 # TCP listen() 函数的等待队列长度
tcp-keepalive 300 # TCP keepalive 时间间隔,单位为秒
unixsocket /var/run/redis/redis.sock # Unix 套接字文件路径
unixsocketperm 700 # Unix 套接字文件的权限
loglevel notice # 日志记录级别
logfile /var/log/redis/redis.log # 日志文件路径
syslog-enabled no # 是否将日志输出到系统日志
syslog-ident redis # 系统日志标识符
syslog-facility local0 # 系统日志设施
databases 16 # Redis 数据库数量
save 900 1 # 触发快照保存的条件(900 秒内至少有一个键被修改)
save 300 10 # 触发快照保存的条件(300 秒内至少有 10 个键被修改)
save 60 10000 # 触发快照保存的条件(60 秒内至少有 10000 个键被修改)
stop-writes-on-bgsave-error yes # 快照保存出错时是否停止写入操作
rdbcompression yes # 是否开启 RDB 文件压缩
rdbchecksum yes # 是否开启 RDB 文件校验
dbfilename dump.rdb # RDB 文件名
appendonly no # 是否开启 AOF 持久化
appendfilename "appendonly.aof" # AOF 持久化文件名
appendfsync everysec # AOF 持久化的同步方式
no-appendfsync-on-rewrite no # 是否在 AOF 重写时禁止同步
auto-aof-rewrite-percentage 100 # 触发 AOF 重写的条件(AOF 文件大小增长率达到 100%)
auto-aof-rewrite-min-size 64mb # 触发 AOF 重写的条件(AOF 文件最小大小)
aof-load-truncated yes # 是否在 AOF 文件被截断时继续加载剩余内容
slave-serve-stale-data yes # 从节点是否在主节点不可用时仍然向客户端提供服务
slave-read-only yes # 从节点是否只读
repl-diskless-sync no # 是否在复制时避免使用磁盘
repl-diskless-sync-delay 5 # 复制时磁盘同步延迟时间,单位为秒
repl-ping-slave-period 10 # 主节点发送 ping 命令的时间间隔,单位为秒
repl-timeout 60 # 主从节点之间的心跳超时时间,单位为秒
repl-disable-tcp-nodelay no # 是否禁用 TCP_NODELAY 算法
slave-priority 100 # 从节点优先级
sentinel deny-scripts-reconfig yes # 是否允许 Sentinel 脚本重新配置 Redis
sentinel monitor mymaster 127.0.0.1 6379 2 # 监控的主节点名称、IP 地址、端口号、quorum
sentinel down-after-milliseconds mymaster 30000 # 主节点失效判定时间,单位为毫秒
sentinel failover-time
# Redis 配置文件示例
# 通用设置
daemonize no # 是否以守护进程方式运行 Redis
pidfile /var/run/redis_6379.pid # Redis 进程 ID 文件路径
port 6379 # Redis 监听的端口号
bind 127.0.0.1 # Redis 监听的地址(默认为本地回环地址)
# 连接设置
timeout 0 # Redis 客户端连接超时时间
tcp-keepalive 0 # 是否开启 TCP keepalive
# 通信协议设置
tcp-backlog 511 # TCP listen() 函数的等待队列长度
tcp-keepalive 300 # TCP keepalive 时间间隔,单位为秒
unixsocket /var/run/redis/redis.sock # Unix 套接字文件路径
unixsocketperm 700 # Unix 套接字文件的权限
# 通用配置项
loglevel notice # 日志记录级别
logfile /var/log/redis/redis.log # 日志文件路径
syslog-enabled no # 是否将日志输出到系统日志
syslog-ident redis # 系统日志标识符
syslog-facility local0 # 系统日志设施
databases 16 # Redis 数据库数量
# 快照配置项
save 900 1 # 触发快照保存的条件(900 秒内至少有一个键被修改)
save 300 10 # 触发快照保存的条件(300 秒内至少有 10 个键被修改)
save 60 10000 # 触发快照保存的条件(60 秒内至少有 10000 个键被修改)
stop-writes-on-bgsave-error yes # 快照保存出错时是否停止写入操作
rdbcompression yes # 是否开启 RDB 文件压缩
rdbchecksum yes # 是否开启 RDB 文件校验
dbfilename dump.rdb # RDB 文件名
# AOF 配置项
appendonly no # 是否开启 AOF 持久化
appendfilename "appendonly.aof" # AOF 持久化文件名
appendfsync everysec # AOF 持久化的同步方式
no-appendfsync-on-rewrite no # 是否在 AOF 重写时禁止同步
auto-aof-rewrite-percentage 100 # 触发 AOF 重写的条件(AOF 文件大小增长率达到 100%)
auto-aof-rewrite-min-size 64mb # 触发 AOF 重写的条件(AOF 文件最小大小)
aof-load-truncated yes # 是否在 AOF 文件被截断时继续加载剩余内容
# 主从复制配置项
slave-serve-stale-data yes # 从节点是否在主节点不可用时仍然向客户端提供服务
slave-read-only yes # 从节点是否只读
repl-diskless-sync no # 是否在复制时避免使用磁盘
repl-diskless-sync-delay 5 # 复制时磁盘同步延迟时间,单位为秒
repl-ping-slave-period 10 # 主节点发送 ping 命令的时间间隔,单位为秒
repl-timeout 60 # 主从节点之间的心跳超时时间,单位为秒
repl-disable-tcp-nodelay no # 是否禁用 TCP_NODELAY 算法
slave-priority 100 # 从节点优先级
# Sentinel 配置项
sentinel deny-scripts-reconfig yes # 是否允许 Sentinel 脚本重新配置 Redis
sentinel monitor mymaster 127.0.0.1 6379 2 # 监控的主节点名称、IP 地址、端口号、quorum
sentinel down-after-milliseconds mymaster 30000 # 主节点失效判定时间,单位为毫秒
sentinel failover-timeout mymaster 180000
是否在命令行启动时显示 Redis Logo,默认为 yes。可以将该选项设置为 no,以屏蔽 Redis Logo 的显示。
控制 Redis 在每秒钟运行的循环次数。默认为 10,表示每秒钟运行 10 次循环。可以将该选项设置为一个正整数,以控制 Redis 运行的速度。
允许在配置文件中包含其他文件,默认为 "",表示不包含其他文件。可以将该选项设置为实际文件名,以包含其他文件的配置项。
控制 Lua 脚本的执行时间限制,默认为 5000 毫秒。可以将该选项设置为一个正整数,以控制 Lua 脚本的最长执行时间。
控制 Redis 复制功能的回放缓冲区大小,默认为 1MB。可以将该选项设置为一个正整数,以控制回放缓冲区的大小。
是否在复制时避免使用磁盘,即将数据直接从主节点传输到从节点的内存中,默认为 no。可以将该选项设置为 yes,以避免磁盘的使用。
控制主节点发送 ping 命令的时间间隔,默认为 10 秒。可以将该选项设置为一个正整数,以控制 ping 命令的发送间隔。
控制主从节点之间的心跳超时时间,默认为 60 秒。可以将该选项设置为一个正整数,以控制心跳超时时间。
是否开启 AOF 持久化,默认为 no。AOF 持久化可以保证 Redis 在宕机时不会丢失数据,但会增加额外的磁盘写入操作。
AOF 持久化文件名,默认为 appendonly.aof。可以将该选项设置为实际文件名。
AOF 持久化的同步方式,默认为 everysec。可以将该选项设置为 always、everysec 或 no,分别表示每个写入命令时同步、每秒同步一次或不同步。
RDB 持久化的触发条件,默认为 save 900 1,表示如果 900 秒内至少有一个键被修改,则执行 RDB 持久化。可以设置多个触发条件,例如 save 300 10 表示如果 300 秒内至少有 10 个键被修改,则执行 RDB 持久化。
是否开启 RDB 文件压缩,默认为 yes。开启压缩可以减少磁盘空间的占用,但会增加 CPU 的负载。
Redis 内存达到最大限制后的淘汰策略,默认为 noeviction,表示停止写入操作。其他可选策略包括 volatile-lru、volatile-ttl、volatile-random、allkeys-lru、allkeys-random 等。
控制客户端输出缓冲区的大小,默认为 client-output-buffer-limit normal 0 0 0,表示不限制缓冲区大小。可以将该选项设置为实际缓冲区大小,以避免客户端输出缓冲区溢出。
开启键空间通知功能,默认为 "",表示关闭键空间通知功能。可以将该选项设置为 KEA、KgE、lsh、E、gxE 等,表示监听不同类型的键空间事件。
注意:这些配置项很多是比较高级的配置项,只有在深度理解 Redis 运行机制和需要特定的功能时才需要使用。
如果您不确定如何使用这些配置项,建议参考 Redis 的官方文档或向 Redis 社区寻求帮助。
除了上面提到的常用配置项之外,Redis 配置文件中还有很多其他配置项,以下是一些较为常见的配置项及其说明:
需要注意的是,Redis 的配置文件中有些配置项是高级配置项,需要慎重设置。如果您不确定该如何设置这些配置项,建议使用默认值或咨询 Redis 官方文档或社区。
在对 Redis 进行配置时,有一些注意事项需要注意,包括但不限于以下几点:
Redis 是一种基于内存的数据存储系统,需要合理设置 Redis 实例的内存限制。如果设置过高,可能会导致 Redis 运行缓慢或崩溃;如果设置过低,则可能会影响 Redis 的性能。
快照和 AOF 是 Redis 的两种持久化方式,可以保证数据在 Redis 重启或崩溃时不会丢失。在设置快照和 AOF 配置项时,需要根据实际需求进行选择和配置。如果不需要持久化数据,可以将这两个配置项都关闭。
在Redis 的配置文件中,可以设置最大连接数。如果设置过低,可能会导致 Redis 无法处理大量的客户端请求;如果设置过高,可能会导致 Redis 消耗过多的内存和 CPU 资源。
要确保 Redis 实例的安全,需要设置密码、限制访问地址、限制命令等。尤其是 Redis 实例的密码设置,需要保证密码的强度和复杂度,以免被破解和攻击。
虽然 Redis 有持久化机制可以保证数据不丢失,但在特殊情况下,如硬件故障或人为误操作等,也可能会导致数据丢失。因此,建议定期备份 Redis 数据,以便在出现问题时能够快速恢复数据。
Redis 的性能和稳定性与实例的配置和运行状态密切相关。因此,在运行 Redis 实例时,需要定期监控 Redis 的运行状态、性能指标和日志信息,并进行必要的调优和优化,以确保 Redis 实例的高可用和高性能。
在配置 Redis 实例时,需要根据实际需求和环境来进行选择和配置,以达到最佳的性能和稳定性。同时,需要对 Redis 运行状态进行定期监控和调优,以保证 Redis 实例的高可用和高性能。