优化Redis配置文件
合理调整Redis配置是提升响应速度的基础。关键参数包括:
maxmemory限制Redis最大内存(建议预留20%-50%空间给碎片和系统),设置maxmemory-policy(如allkeys-lru,内存满时淘汰最近最少使用的Key);优化数据结构编码(如hash-max-ziplist-entries 512,小Hash使用Ziplist编码减少内存占用)。aof-use-rdb-preamble yes,Redis 4.0+),结合RDB的快速恢复和AOF的高安全性;调整appendfsync为everysec(每秒同步,平衡性能与数据安全)。maxclients(如10000)限制最大客户端连接,避免资源耗尽;调整timeout(如300秒)关闭空闲连接,释放资源。选择高效数据结构
根据业务场景选择合适的数据结构,减少内存使用和操作开销:
list-max-ziplist-size -2、hash-max-ziplist-entries 512),内存占用更低;优化网络与连接
降低网络延迟和连接开销,提升请求处理效率:
tcp-keepalive(如tcp-keepalive 60,60秒发送一次保活包),检测死连接并及时关闭;调整系统参数net.core.somaxconn(如65535,增大连接队列长度),避免高并发时连接被拒绝。调整Linux系统参数
优化系统内核和磁盘性能,减少Redis的底层瓶颈:
echo never > /sys/kernel/mm/transparent_hugepage/enabled,避免内存分配延迟(THP会导致内存分配时间增加10-100倍);jemalloc(Redis默认),相比libc更高效的内存管理,减少内存碎片;vm.overcommit_memory=1(允许内存超额分配,避免fork操作失败)、net.ipv4.tcp_syncookies=1(防止SYN Flood攻击,提升TCP连接建立速度)。使用持久化优化策略
合理配置持久化,避免因磁盘I/O影响响应速度:
save策略(如save 900 1、save 300 10、save 60 10000),平衡快照频率和性能;dir指定高性能存储路径(如SSD);dbfilename使用短文件名(如dump.rdb),减少文件系统开销。appendfsync everysec(默认,每秒同步一次,兼顾性能与数据安全);定期执行BGREWRITEAOF(如每月一次),压缩AOF文件(去除冗余命令,如多次SET同一Key),减少文件大小和重放时间;开启混合持久化(aof-use-rdb-preamble yes),提升重启恢复速度(Redis 4.0+)。客户端与命令优化
减少客户端对Redis的请求压力:
MGET/MSET替代多个GET/SET(减少网络往返次数,如10次GET变为1次MGET,延迟降低约70%);pipeline([set key1 val1, set key2 val2])),减少网络延迟(Redis单线程处理命令,Pipeline可将延迟降低至原来的1/N);KEYS *(阻塞Redis,无法处理其他请求),用SCAN替代(增量遍历Key,如scan 0 count 100,每次返回100个Key);减少大Value(如超过10KB的Value,建议拆分或压缩)。监控与持续调优
通过监控发现问题,针对性优化:
redis-cli --stat实时查看QPS、延迟、内存使用等指标;INFO memory查看内存碎片率(mem_fragmentation_ratio,>1.5需重启整理);slowlog-log-slower-than 10ms,记录执行时间超过10ms的命令),用SLOWLOG GET查看慢查询详情(如KEYS *、大Value读取),优化慢命令;