以下是Ubuntu下Redis性能调优的核心技巧,涵盖配置、内存、持久化、集群等多方面:
-
系统环境优化
- 禁用透明大页(THP):执行
echo never > /sys/kernel/mm/transparent_hugepage/enabled,避免内存分配延迟。 - 调整内核参数:优化
vm.swappiness(建议设为10-30)、net.core.somaxconn(增大TCP连接队列)。
- 禁用透明大页(THP):执行
-
Redis配置优化
- 内存管理:
- 设置
maxmemory限制内存使用,搭配maxmemory-policy(如allkeys-lru淘汰策略)。 - 启用内存碎片整理(需定期执行
MEMORY PURGE)。
- 设置
- 持久化策略:
- RDB:适合备份,配置
save参数控制快照频率(如save 900 1)。 - AOF:开启
appendonly yes,设置appendfsync everysec平衡性能与数据安全。 - 混合持久化(Redis 4.0+):
aof-use-rdb-preamble yes,结合RDB快照和AOF增量。
- RDB:适合备份,配置
- 网络与连接:
- 绑定内网IP,限制
maxclients避免连接数过多。 - 启用TCP keepalive(
tcp-keepalive 300)防止连接超时。
- 绑定内网IP,限制
- 内存管理:
-
数据结构与操作优化
- 用哈希表(Hash)替代多个字符串键,节省内存。
- 短化键名和字段名,减少内存占用。
- 避免大Key(单Key数据量建议<10KB),大Value可分片存储。
- 使用管道(Pipeline)批量操作,减少网络往返延迟。
-
集群与高可用
- 主从复制:配置
replicaof实现读写分离,提升读性能。 - Redis Cluster:分片存储数据,支持高并发和自动故障转移。
- 哨兵模式:监控主节点状态,实现故障自动切换。
- 主从复制:配置
-
监控与维护
- 使用
redis-cli --stat或第三方工具(如Prometheus+Grafana)监控内存、QPS、延迟等指标。 - 定期执行
INFO memory分析内存使用,清理冗余数据。 - 避免在生产环境直接使用
FLUSHALL,优先通过业务逻辑清理数据。
- 使用
参考来源: