概述
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 文件到外部存储。
 
                  
                  
                  
                  
      
          
                
                
                
                
              
                
                
                
                
                
              
                
                
              
            
                  
					843
					
被折叠的  条评论
		 为什么被折叠?
		 
		 
		
    
  
    
  
            


            