当前位置: 首页 > java >正文

Redis配置文件详解

概述

Redis 配置文件的官网地址:https://redis.io/topics/config

GitHub地址:https://github.com/redis/redis/blob/unstable/redis.conf

本文主要是根据Redis6.0.x版本的配置文件讲解,其它版本的也可以当做一个参考。

Redis配置说明

基础配置

# 绑定的IP地址(默认绑定127.0.0.1,仅本地访问)
# 生产环境建议绑定具体IP或0.0.0.0(需配合防火墙/密码)
bind 0.0.0.0# 监听端口(默认6379)
port 6379# 是否以守护进程方式运行(默认no),生产环境建议使用yes
daemonize yes# PID文件路径
pidfile /var/run/redis_6379.pid# 日志级别(debug|verbose|notice|warning,默认notice)
loglevel notice# 日志文件路径(设为stdout输出到控制台,默认空)
logfile "/var/log/redis/redis.log"# 数据库数量(0-15,默认16个)
databases 16# 是否开启保护模式(默认yes,仅允许本地访问或密码访问)
protected-mode yes# 客户端最大连接数(默认10000,设为0表示无限制)
maxclients 10000

内存管理

# 最大内存限制(如2gb、512mb,默认0表示不限制,生产环境必须设置)
maxmemory 0# 内存淘汰策略(默认noeviction)
# - noeviction:禁止写入,返回错误
# - allkeys-lru:移除最近最少使用的key
# - allkeys-random:随机移除key
# - volatile-lru:移除设置了过期时间的LRU key
# - volatile-random:随机移除设置了过期时间的key
# - volatile-ttl:移除即将过期的key
# - volatile-lfu:移除最不经常使用的带过期时间的key
# - allkeys-lfu:移除最不经常使用的key
maxmemory-policy noeviction# LRU/LFU算法的近似精度(值越大越精确,默认50)
maxmemory-samples 50# 是否开启内存碎片自动整理(默认no)
activedefrag no# 碎片整理触发的最小内存碎片量(默认100mb)
active-defrag-ignore-bytes 100mb# 碎片整理触发的最小碎片率(默认10%)
active-defrag-threshold-lower 10# 碎片整理触发的最大碎片率(默认100%)
active-defrag-threshold-upper 100# 碎片整理使用的CPU时间下限(默认1%)
active-defrag-cycle-min 1# 碎片整理使用的CPU时间上限(默认25%,避免影响正常服务)
active-defrag-cycle-max 25

持久化配置

RDB 快照

# 自动生成RDB快照的条件(save <seconds> <changes>)
# 可设置多条规则,满足任一条件即触发
save 900 1      # 900秒内至少1个key被修改
save 300 10     # 300秒内至少10个key被修改
save 60 10000   # 60秒内至少10000个key被修改# 禁用RDB快照(注释所有save行)
# save ""# RDB文件名称(默认dump.rdb)
dbfilename dump.rdb# RDB文件存储路径(必须是目录)
dir ./# RDB文件是否压缩(默认yes,压缩可能影响性能)
rdbcompression yes# RDB文件是否添加CRC64校验和(默认yes,牺牲约10%性能换取数据完整性)
rdb-checksum yes# 后台生成RDB时是否使用增量fsync(默认yes,4.0+支持)
rdb-save-incremental-fsync yes

AOF配置

# 是否启用AOF持久化(默认no)
appendonly no# AOF文件名(默认appendonly.aof)
appendfilename "appendonly.aof"# AOF同步策略(默认everysec)
# - always:每次写操作都同步到磁盘(最慢但最安全)
# - everysec:每秒同步一次(兼顾性能和安全性)
# - no:由操作系统决定何时同步(最快但可能丢失数据)
appendfsync everysec# AOF重写期间是否暂停fsync(默认no,避免数据丢失)
no-appendfsync-on-rewrite no# AOF文件自动重写的最小大小(默认64mb)
auto-aof-rewrite-min-size 64mb# AOF文件自动重写的增长率(默认100%,即当前文件是上次重写后2倍时触发)
auto-aof-rewrite-percentage 100# 加载AOF文件时是否忽略最后一条可能不完整的命令(默认yes)
aof-load-truncated yes# AOF重写时是否使用RDB格式的前缀(减少文件体积,默认yes)
aof-use-rdb-preamble yes

主从复制

# 设置当前Redis为从节点,并指定主节点(主节点IP和端口)
replicaof <masterip> <masterport># 主节点密码(如果有)
masterauth <password># 从节点是否只读(默认yes)
replica-read-only yes# 主从复制的网络超时时间(秒,默认60)
repl-timeout 60# 主从复制的心跳频率(秒,默认10)
repl-ping-replica-period 10# 复制缓冲区大小(用于保存主节点未同步给从节点的写命令,默认1mb)
repl-backlog-size 1mb# 复制缓冲区的持久化时间(秒,超过此时长且无从节点连接则释放内存,默认3600)
repl-backlog-ttl 3600# 从节点优先级(数值越小优先级越高,0表示不参与选举,默认100)
replica-priority 100# 主节点不可用时,从节点是否继续服务读请求(默认yes)
replica-serve-stale-data yes# 是否使用无盘复制(主节点直接通过网络发送RDB,避免磁盘I/O,默认no)
repl-diskless-sync no# 无盘复制的延迟时间(秒,等待更多从节点连接后一起传输,默认5)
repl-diskless-sync-delay 5

安全配置

# 设置访问密码(建议使用复杂密码,生产环境必须设置)
requirepass foobared# 是否启用ACL(访问控制列表,替代传统密码,默认no)
aclfile /etc/redis/users.acl# 重命名危险命令(例如将FLUSHALL改为安全名称,或禁用命令)
# rename-command FLUSHALL ""        # 禁用命令
# rename-command FLUSHALL "FLUSHDB"  # 重命名命令(不建议)

网络与连接

# TCP连接的backlog队列长度(默认511,影响短时间内的突发连接处理能力)
tcp-backlog 511# TCP连接保活时间(秒,默认300)
tcp-keepalive 300# 是否禁用TCP_NODELAY(默认no,启用Nagle算法减少网络包数量,但可能增加延迟)
tcp-nodelay no# 客户端闲置超时时间(单位秒,默认0表示不超时)
timeout 0

慢查询日志

# 慢查询阈值(微秒,默认10000=10ms)
slowlog-log-slower-than 10000# 慢查询日志的最大长度(默认128)
slowlog-max-len 128

I/O 线程

# 是否启用I/O多线程(默认no,4.0+支持,仅加速网络I/O,命令执行仍为单线程)
io-threads-do-reads no# I/O线程数(建议设置为CPU核心数的一半,不超过8,默认4)
io-threads 4

集群配置(Redis Cluster)

# 是否启用集群模式(默认no),设置为 yes 时,Redis 实例将以集群节点的身份运行,参与集群的管理和数据分布。
cluster-enabled no# 集群配置文件(自动生成,无需手动编辑)
cluster-config-file nodes.conf# 节点超时时间(毫秒,默认15000)
cluster-node-timeout 15000# 故障转移时,从节点复制的最小时长(秒,默认10)
cluster-replica-validity-factor 10# 集群是否要求所有槽位都被分配(默认yes,避免脑裂)
cluster-require-full-coverage yes# 从节点是否可以迁移到其他主节点(默认yes)
cluster-migration-barrier 1

发布订阅

# 发布订阅的客户端连接数上限(默认不限制,设为0表示不限制)
pubsub-max-connections 0# 发布订阅的消息队列长度上限(默认32,防止内存溢出)
client-output-buffer-limit pubsub 32mb 8mb 60

监控与统计

# 是否记录内存分配信息(默认no,生产环境建议关闭)
memtier yes# 是否记录内存碎片信息(默认yes)
meminfo-command yes# 是否记录内存分配器的详细信息(默认no)
malloc-stats no

其他配置

# 是否在启动时检查AOF文件(默认yes)
aof-checksum yes# 是否启用Lua脚本功能(默认yes)
lua-time-limit 5000  # Lua脚本最大执行时间(毫秒,默认5000)# 是否启用哈希表的渐进式rehash(默认yes,提高性能)
activerehashing yes# 是否启用大页内存(默认no,启用可能导致延迟问题)
transparent-hugepage yes# 是否启用客户端追踪(默认no,用于调试客户端请求来源)
client-tracking no# 客户端追踪的重定向模式(默认OFF)
# - ON:追踪所有客户端
# - REDIRECT:将追踪信息重定向到指定客户端
client-tracking-redirection ""# 是否启用延迟监控(默认no)
latency-monitor-threshold 0  # 设为0表示禁用,设为具体值(如10)则监控超过此值的操作# 延迟监控的历史记录长度(默认1024)
latency-history-length 1024

配置文件最佳实践

  • 设置 maxmemory 和合理的 maxmemory-policy(如 allkeys-lru)。

  • 启用 AOF 持久化(appendonly yes)并设置 appendfsync everysec。

  • 配置 requirepass 并禁用危险命令(如 FLUSHALL)。

  • 对于读写密集型场景,启用 I/O 线程(io-threads)。

  • 根据内存碎片情况调整 activedefrag 参数。

  • 禁用不必要的功能(如 Lua 脚本、发布订阅)以减少资源消耗。

  • 禁用 protected-mode 并通过 bind 和防火墙限制访问。

  • 使用 ACL 替代传统密码认证(Redis 6.0+)。

  • 定期备份 RDB 或 AOF 文件到外部存储。

文章转载自:huangSir-devops

原文链接:Redis配置文件详解 - huangSir-devops - 博客园

体验地址:JNPF快速开发平台

http://www.xdnf.cn/news/8400.html

相关文章:

  • 树 Part 10
  • JFace中MVC的表的单元格编辑功能的实现
  • Datawhale_PyPOTS_task6
  • 【安全攻防与漏洞​】​​HTTPS中的常见攻击与防御​​
  • 机器人强化学习入门学习笔记(三)
  • 洛谷 P1800 software(DP+二分)【提高+/省选−】
  • 三步快速部署一个本地Windows/Linux大语言模型ChatGLM(环境配置+权重下载+运行)
  • AI架构分层原则
  • Stack主题遇到的问题
  • C# WinForm应用程序多语言实现全面指南
  • deepseek组合使用
  • 测试关键点
  • 【Kafka】编写消费者开发模式时遇到‘未解析的引用‘SIGUSR1’’
  • 掌握递归:编程中的优雅艺术
  • 精益数据分析(79/126):从黏性到爆发——病毒性增长的三种形态与核心指标解析
  • Swagger、Springfox、Springdoc-openapi 到底是什么关系
  • 使用 GPUStack 纳管摩尔线程 GPU 进行大语言模型和文生图模型的推理
  • ASPICE认证 vs. 其他标准:汽车软件开发的最优选择
  • C# UDP协议:核心原理、高效实现与实战进阶指南​
  • 2025语音语聊系统源码开发深度解析:WebRTC与AI降噪技术如何重塑语音社交体验
  • 智能存储如何应对极端环境挑战?忆联独家解锁PCIe 5.0固态存储“抗辐射”黑科技,重新定义数据安全防护新高度
  • 机会成本与沉没成本:如何做出理性经济决策
  • grafana/loki-stack 设置日志保存时间及自动清理
  • HarmonyOS NEXT~鸿蒙AI开发全解析:HarmonyOS SDK中的智能能力与应用实践
  • PCB设计教程【入门篇】——电路分析基础-读懂原理图
  • lanqiaoOJ 4330:欧拉函数模板
  • OceanBase 共享存储:云原生数据库的存储
  • 解析 Python 中的 if name == main 机制
  • 多版本Node.js共存管理工具NVM详细使用教程
  • 栈队列 模版题单