[Redis] 解决Redis运行时Cannot save in background问题

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。

Redis运行时经常出现 Cannot save in background. 问题,通常因为两个原因
1.Redis的占用的内存过大,导致BGSAVE时系统无法分配足够的内存给BGSAVE进程而导致错误。
碰到这种情况时,你可以这样操作,限制Redis的最大内存大小到系统内存的一半以内。
设置redis的内存可以在redis.conf 中修改 maxmemory 属性

maxmemory # 系统实际安装内存的一半以内,实验环境的话建议不要超过1/3



如果你机器的内存小但是硬盘速度够快(SSD级别)的话可以开启Redis的VM功能,
否则建议直接关闭VM功能,实验环境可以直接关闭VM

vm-enable no #关闭VM


2.两次触发BGSAVE的时间间隔过短,导致BGSAVE操作队列阻塞而出现错误。
碰到这种情况时,一般根据你的程序情况调整一下Redis的BGSAVE的触发策略就可以了,
在redis.conf 中找到几条save开头的配置,根据要求进行相应的配置即可。
具体根据你的实际生产环境配置相应的策略。原则上以保证减少BGSAVE次数为目标

save 1000 1 #1000秒内只要有1次更新就进行save (低频)
save 250 10 #250秒内只要有10次更新就进行save(中频)
save 120 1000 #120秒内只要有1000次更新就进行save(高频)
save 40 10000 #40秒内只要有10000次更新就进行save(超高频,实验环境不需要配置)

第一个参数表示时间段,以秒为单位
第二个参数表示更新次数,以次为单位

最后,写入压缩属性可以设置到的打开状态,可以有效减少每次BGSAVE的硬盘写入时间

rdbcompression yes




--------------------------------------------------------------------------------------

- 版权声明:

- 如在本页面内无特别说明,本文内容均为[李大仁博客]原创,本文版权归[李大仁博客]所有。

- 欢迎转载,转载请务必在文章页面明显位置提供原文链接并注明出处。欢迎您在转载本文时保留本段声明。

- 文章标题: [Redis] 解决Redis运行时Cannot save in background问题

- 独立博客: 李大仁博客

- 永久链接: http://www.lidaren.com/archives/1562

--------------------------------------------------------------------------------------

以上内容由博客自动发布工具自动发布,最终显示内容和效果会与原文内容有所偏差,敬请谅解。





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值