上一篇
"王哥!网站又卡了!" 开发小张急匆匆地跑来,额头上挂着汗珠,你打开监控一看,Redis的响应时间已经突破了500ms,内存使用率在90%上下跳动,活像个过载的老黄牛🐮,这场景熟悉吗?别担心,今天我们就来彻底解决Redis的性能难题!
Redis的配置文件就像它的"基因代码",决定了它的行为模式,默认配置虽然能用,但就像开自动挡跑车却永远不换挡——浪费性能!
通常位置:
/etc/redis/redis.conf
-v
挂载或redis-server /path/to/redis.conf
指定💡 小技巧:修改前先备份!cp redis.conf redis.conf.bak
# 设置为物理内存的3/4(留些给系统) maxmemory 12gb # 内存淘汰策略(根据业务选择) maxmemory-policy volatile-lru # 对设置了过期时间的key使用LRU # 其他选项: # allkeys-lru → 所有key参与LRU # volatile-ttl → 优先删除剩余时间短的 # noeviction → 不淘汰(可能引发OOM)
# 开启自动碎片整理 activedefrag yes # 内存碎片率超过100%时触发 active-defrag-ignore-bytes 100mb active-defrag-threshold-lower 10 active-defrag-threshold-upper 100
# 在900秒内有至少1个key变化时保存 save 900 1 save 300 10 save 60 10000 # 快照出错时停止写入(保护数据一致性) stop-writes-on-bgsave-error yes # 压缩RDB文件(消耗CPU但节省空间) rdbcompression yes
appendonly yes # 开启AOF # 同步策略(平衡性能与安全) appendfsync everysec # 折中选择 # no → 靠操作系统刷盘(性能最好,风险最高) # always → 每次写入都刷盘(最安全,性能差) # AOF重写策略 auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb
# 最大连接数(根据业务调整) maxclients 10000 # TCP积压队列(高并发场景调大) tcp-backlog 511 # 心跳保持(防止连接断开) timeout 300 # 客户端空闲300秒后断开 tcp-keepalive 60 # 每60秒发送一次心跳
# 记录超过5毫秒的查询 slowlog-log-slower-than 5000 # 保留最近1000条慢查询 slowlog-max-len 1000
防止大Key拖垮Redis:
client-output-buffer-limit normal 0 0 0 # 普通客户端不限 client-output-buffer-limit replica 256mb 64mb 60 # 从库限制 client-output-buffer-limit pubsub 32mb 8mb 60 # 发布订阅限制
# 密码保护(别用默认密码!) requirepass YourSuperStrongPassword123! # 禁用危险命令(生产环境必做) rename-command FLUSHALL "" rename-command CONFIG "" rename-command SHUTDOWN SHUTDOWN_MYREDIS # 重命名而不是完全禁用
实时监控命令:
redis-cli info # 查看全部信息 redis-cli info memory # 专看内存 redis-cli --latency # 检测延迟
定期检查清单:
最好的配置是适合你业务场景的配置!电商大促前把maxmemory-policy
改成allkeys-lru
,物联网项目可能更需要优化client-output-buffer
,多测试、多监控,你的Redis一定能跑得又快又稳!
下次小张再跑来时,你可以淡定地说:"调好了,现在响应时间<5ms" 😎
本文由 善若南 于2025-08-04发表在【云服务器提供商】,文中图片由(善若南)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/535286.html
发表评论