MISCONF Redis is configured to save RDB snapshots, but it is currently not a

开发环境最近遇到了"MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk"的问题,服务出现了问题,一看日志是Redis在报这个错误。

查了查网上的资料,解决方案基本都是修改Redis的配置文件,将

stop-writes-on-bgsave-error yes修改为 stop-writes-on-bgsave-error no

这是一个暂时性的解决方法。看了看stackoverflow上的回答,最高赞回答是这样的,如下图:

大概意思是:这是一个快速应急方法,如果你担心你的数据,那就首先检查下bgsave方法为什么会失败。bgsave方法是干什么的呢?咱来看下面这张图:

bgsave方法为什么会失败呢?咱们看看大佬的回答

大概意思是(翻译不到位的地方,还请见谅,英文比较菜):在BGSAVE时,Redis会fork一个子进程,把数据保存到硬盘上。你可以通过查看日志来获取BGSAVE失败的原因(Linux系统里Redis日志文件通常是在/var/log/redis/redis-server.log),大多数时候BGSAVE失败的原因是fork进程分配不到内存。更多时候,fork进程分配不到内存是因为跟操作系统的优化相冲突,即使操作系统有足够的内存。(下面一大段就不翻译了,意思是可以Redis官网找到相应的解释,文末会把相关文章链接都缀上)。当然大神也给出了解决方案

Linux系统中,修改/etc/sysctl.conf文件,添加配置:

vm.overcommit_memory=1

执行命令,使其生效

sudo sysctl -p /etc/sysctl.conf

参考文章链接:

stackoverflow的回答链接

BGSAVE命令解释

redis官网的faq

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis是一个开源的In-Memory数据存储系统,它可以用于缓存、持久化和消息中间件等多种应用场景。当我们使用Redis时,可能会遇到misconf redis is configured to save rdb snapshots but it is currently not ab这个错误提示,意思是Redis配置了保存RDB快照但是目前不可用。那我们该如何解决这个问题呢? 首先,我们需要了解什么是RDB快照。Redis支持两种持久化方式,一种是RDB快照,另一种是AOF日志。其中,RDB快照是一种周期性地将Redis中的数据完全备份到磁盘上的持久化方式。这样做的好处是可以在Redis重启后快速地将数据恢复到之前的状态,缺点是可能会丢失最近的一些修改数据。 接着,我们需要确认一下Redis的配置项是否正确。在Redis中,我们可以通过CONFIG GET命令来查看当前的配置项。其中,dir配置项指定了RDB快照的保存路径,而save配置项则指定了保存快照的条件。例如,save 900 1表示如果900秒内有至少1个键被修改,则保存RDB快照。 如果我们在确认了配置项正确无误的情况下仍然遇到这个错误提示,那么可能是由于磁盘空间不足或权限问题导致的。我们可以尝试在空间充足和权限正确的情况下重新运行Redis,或者调整保存快照的条件,以减少保存的频率。 总之,当遇到misconf redis is configured to save rdb snapshots but it is currently not ab这个错误提示时,我们需要先确认Redis的配置项是否正确,并检查磁盘空间和权限是否正常,然后根据具体情况进行调整。只有这样,才能保证Redis的数据安全和稳定运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值