Redis集群配置要点
Redis集群的核心配置需在redis.conf中完成,关键参数包括:
cluster-enabled yes:启用集群模式,节点以集群身份启动;cluster-config-file nodes-<port>.conf:集群配置文件路径(自动生成与维护),记录节点ID、槽位分配等信息,节点重启后自动读取;cluster-node-timeout 15000:节点失联判定时间(毫秒),超过该时间未收到心跳则认为节点故障,影响故障转移速度(生产环境建议设为15-30秒);appendonly yes:开启AOF持久化,确保数据落盘,避免节点重启后数据丢失;protected-mode no:关闭保护模式(需配合密码),允许远程节点访问(集群节点间需互通);requirepass与masterauth:设置集群密码(所有节点密码一致),requirepass用于客户端认证,masterauth用于从节点连接主节点时的认证。cluster-port=客户端端口+10000)交换心跳、槽位变更等信息,保证信息快速传播。Redis Cluster采用虚拟槽分区(0-16383共16384个槽),槽是数据分片与迁移的基本单位:
redis-cli --cluster create自动分配,或手动用CLUSTER ADDSLOTS命令分配;CLUSTER REBALANCE命令调整槽分布,使各主节点负载均衡(如新增节点时迁移部分槽到新节点);MSET、事务),需通过HashTag(如{user:1000}.name与{user:1000}.age使用相同HashTag,强制映射到同一槽)解决。--cluster-replicas 1),从节点通过异步复制同步主节点数据;cluster-replica-validity-factor 10:从节点与主节点断链时间超过cluster-node-timeout×factor时,才允许故障转移(避免误判);cluster-migration-barrier 1:主节点至少保留1个从节点时,多余从节点才能迁移至无从节点的主节点(防止单主节点故障后无从节点可用);cluster-allow-reads-when-down no(默认),节点无法连接多数主节点或存在未覆盖槽时,停止接收所有请求(保证数据一致性);若设为yes,允许从节点处理读请求(提升读性能,但可能读到旧数据)。requirepass(客户端连接需认证),masterauth(从节点连接主节点需认证),防止未授权访问;appendfsync everysec,平衡性能与数据安全)+ RDB(save 900 1,快速恢复),避免数据丢失。maxmemory(如maxmemory 8GB,预留操作系统与进程内存),选择合适淘汰策略(如volatile-lru优先淘汰易变数据,allkeys-lfu全局淘汰低频数据);activedefrag yes,设置active-defrag-threshold-lower 10(内存碎片率超过10%时触发整理),减少碎片占用;tcp-keepalive 60(保持长连接,避免频繁建连),tcp-backlog 511(增加连接队列容量,应对高并发);Pipeline(打包多个命令,减少RTT)或Lua脚本(原子性执行复杂操作,如计数器+条件判断),提升吞吐量。