1. 选择合适的内存管理策略:Redis 支持多种内存淘汰策略,如 volatile-lru、allkeys-lru 等。根据数据特性选择合适的策略,避免内存不足导致的性能下降。配置 maxmemory-policy 参数。
2. 优化数据结构使用:优先使用 hash、list 等复合数据结构代替多个 string key,减少内存碎片和 key 数量。使用 pipeline 批量操作,减少网络往返时间。
3. 合理设置过期时间:为临时数据设置 expire,避免内存无限增长。使用 keyevent 监控过期事件,及时清理。
4. 主从复制与哨兵配置:启用主从复制分担读压力,使用哨兵实现高可用。调整 repl-backlog-size 参数优化复制效率。
5. 持久化策略优化:根据业务需求选择 RDB 或 AOF,混合使用可兼顾性能和数据安全。调整 AOF 的 fsync 策略为 everysec。
来源聚合内容1
Redis性能瓶颈往往出现在高并发场景下,首先要监控 slowlog,找出慢查询命令,然后优化这些命令。避免使用 keys *、smembers 等 O(N) 命令,使用 scan 渐进式迭代。
网络延迟是常见问题,使用 Redis Cluster 分片数据,减少单节点压力。连接池配置至关重要,设置合适的 max-total 和 max-idle。
来源聚合内容2
数据延迟主要源于复制机制,主库写操作后从库异步同步可能滞后。增大 repl-timeout 参数,监控 replication lag。使用 wait 命令确保写操作同步到指定从节点。
内存碎片率高会导致性能下降,使用 memory-purger 配置主动碎片整理。关闭透明大页(transparent huge pages)以减少延迟抖动。
来源聚合内容3
运行逻辑优化包括合理设置 hz 参数,默认10,值过高增加 CPU 消耗,过低响应慢。针对 Pub/Sub 场景,使用单独实例避免阻塞主逻辑。
Lua 脚本原子执行可减少网络交互,但脚本过长会阻塞。限制脚本大小和执行时间。
来源聚合内容4
告别瓶颈的关键是基准测试,使用 redis-benchmark 工具模拟负载,找出弱点。结合 info 命令监控内存、CPU、QPS 等指标。
FAQ
Q: Redis 内存满了怎么办?
A: 设置 maxmemory 和淘汰策略,监控内存使用,及时扩容或优化数据。
Q: 如何减少复制延迟?
A: 优化网络带宽,增大 repl-diskless-sync-delay,监控 offset 差距。
Q: 慢查询怎么排查?
A: 用 slowlog get 查看,优化命令或增加 slave 读。
Q: Cluster 模式下数据倾斜如何处理?
A: 监控 slot 分布,手动 rebalance 或优化 key 分布规则。