Redis性能调优技巧
maxmemory:根据服务器内存和业务需求限制Redis最大内存(如maxmemory 8gb),避免内存耗尽导致服务崩溃。allkeys-lru(从所有键中淘汰最近最少使用的键),适用于大多数缓存场景;若数据有过期时间,可选择volatile-lru(从设置了过期时间的键中淘汰)。save策略(如save 3600 1,表示1小时内至少有1次修改才触发快照),减少频繁快照对性能的影响;使用bgrewriteaof替代频繁的bgsave,降低I/O压力。aof-use-rdb-preamble yes(混合持久化),兼顾性能与数据安全性;调整auto-aof-rewrite-percentage(如100%)和auto-aof-rewrite-min-size(如64mb),控制AOF重写频率。tcp-backlog(如tcp-backlog 1024),提高高并发下的连接处理能力,避免连接请求被拒绝。io-threads 4(根据CPU核心数调整),提升网络I/O并发性能。user:1包含name、age字段)比多个String(如user:1:name、user:1:age)更节省内存(减少键数量和元数据开销)。hash-max-ziplist-entries 512、list-max-ziplist-size -2等配置,对小Hash、List使用Ziplist编码,降低内存碎片。redis-cli --bigkeys找出内存占用大的键(如超过10KB的键)。product:1拆分为product:1:info、product:1:specs),避免删除或读取大键时阻塞主线程。MSET user:1:name "Alice" user:1:age 30)。redis-cli --pipe导入数据),降低RTT(Round-Trip Time)延迟。replicaof),将读请求分发到从节点,减轻主节点压力。INFO命令(如INFO memory查看内存使用、INFO clients查看连接数)或第三方工具(如Prometheus+Grafana),监控关键指标(内存使用率、QPS、延迟、连接数)。slowlog-log-slower-than 10000(单位:微秒)配置慢查询阈值,使用SLOWLOG get命令分析慢查询(如KEYS *、SORT),优化或替换为高效命令(如SCAN替代KEYS)。EXPIRE key 3600),使用active-expire-effort 100提高过期键清理频率,避免内存堆积。MEMORY PURGE(Redis 4.0+)手动释放内存碎片(需谨慎,生产环境建议在低峰期操作)。