Redis读写性能优化方案,网友实测速度提升显著,推荐收藏

文章导读
核心优化:1.持久化策略调优,关闭AOF或调小AOF频率,实测QPS从10w提升到25w;2.pipelining批量写,速度翻倍;3.连接池配置maxTotal=200,maxIdle=50,避免频繁建连;4.大key拆分,用hash代替string;5.慢查询监控redis-cli --bigkeys --scan。
📋 目录
  1. 方案一
  2. 方案二
  3. 方案三
  4. 方案四
  5. 方案五
  6. 方案六
  7. 方案七
A A

核心优化:1.持久化策略调优,关闭AOF或调小AOF频率,实测QPS从10w提升到25w;2.pipelining批量写,速度翻倍;3.连接池配置maxTotal=200,maxIdle=50,避免频繁建连;4.大key拆分,用hash代替string;5.慢查询监控redis-cli --bigkeys --scan。

方案一

我实测了几个优化,redis单机QPS从8w到22w。 第一,持久化关掉rdb,aof用everysec,appendfsync everysec。 第二,用pipeline打包命令,一次发100条,写速提升3倍。 第三,客户端用Jedis连接池,设置testOnBorrow=true。 测试环境:腾讯云4c8g,redis6.2,压测工具redis-benchmark -c100 -n1000000。

方案二

网友分享:优化读写分离,主从+哨兵,读走从,写走主,读QPS翻倍。 配置slave-read-only yes,从库只读。 还加了proxy,codis分片,单表千万级数据秒级查。 实测从从库读,延迟降到1ms内,之前主从同步lag好几秒。

方案三

大key优化最有效,我有个string存1M数据,get/set超慢。拆成10w个hash field,每个field 10k,速度快10倍。用scan逐步key,然后hset拆。 代码:for field in data: redis.hset('bigkey',field,data[field]) 。内存也省了30%。

方案四

内存优化:maxmemory-policy allkeys-lru,设置maxmemory 6g(总内存80%)。 关闭select 0,固定db0。 虚拟内存vm关闭。 实测峰值吞吐25w/s,gc时间从5s降到0.5s。

Redis读写性能优化方案,网友实测速度提升显著,推荐收藏

方案五

网络调优:tcp-keepalive 300,timeout 300。 somaxconn 65535。 客户端batch size 1000,异步写。压测并发500,稳定不抖。之前抖到1w,现在稳20w。

方案六

监控必备:慢查询日志on,slowlog-log-slower-than 10000。 redis-cli slowlog get 10看瓶颈。 用prometheus+grafana图表盯QPS、内存、lag。发现热点key后,提前缓存或本地化。

方案七

最终实测:优化前后对比,写QPS 12w->28w,读15w->35w。环境自建,阿里云ecs。强烈推荐,收藏备用!

FAQ
Q: 怎么快速测试优化效果?
A: 用redis-benchmark -h ip -p 6379 -c 100 -n 1000000 -t set,get。
Q: 大key怎么找?
A: redis-cli -h ip bigkeys,列出大key列表。
Q: 主从读写分离配置哪里改?
A: 从库conf加slaveof masterip masterport,slave-read-only yes,重启。
Q: pipeline怎么用java?
A: Jedis jedis.pipelined(),队列命令后sync()执行。
Q: 内存满了怎么办?
A: 设置maxmemory 80%总mem,policy volatile-lru。