当前位置: 代码网 > it编程>数据库>Redis > Redis MISCONF Redis is configured to save RDB snapshots错误解决方法

Redis MISCONF Redis is configured to save RDB snapshots错误解决方法

2026年09月07日 Redis 我要评论
前言在redis中添加list,字符串类型的键值对之后,redisdeskmanager上提示了一些错误信息:misconf redis is configured to save rdb snaps

前言

在redis中添加list,字符串类型的键值对之后,redisdeskmanager上提示了一些错误信息:

misconf redis is configured to save rdb snapshots, but is currently not able to persist on disk. commands that may modify the data set are disabled. please check redis logs for details about the error.

翻译为中文大概意思是:

  • redis被配置为保存数据库快照,但它目前不能持久化到磁盘。
  • 用来修改集合数据的命令不能用。
  • 请查看redis日志的详细日志信息。

原因

强制关闭redis快照导致不能持久化。

解决方法

1、将 stop-writes-on-bgsave-error 值

设置为no即可避免这种问题。

如果redis缓存的是非重要数据,对可用性要求不高,可以采用这种方式。有两种修改方式:

  • 命令行修改方式
127.0.0.1:6379> config set stop-writes-on-bgsave-error no
  • 修改redis.conf配置文件,更改后需要重启redis

vim 打开redis.conf文件,使用快捷键匹配模式 /stop-writes-on-bgsave-error 定位到stop-writes-on-bgsave-error 字符串所在位置,将原先设置的yes设置为no。然后重启 redis-cli -h 127.0.0.1 -p 6379 shutdown

2、配置优化

添加以下配置项到 /etc/sysctl.conf 配置文件

 vm.overcommit_memory=1

执行以下命令使其实时生效:

sysctl  vm.overcommit_memory=1

linux内核会根据参数 vm.overcommit_memory参数的设置决定是否放行。

  • vm.overcommit_memory=1 :直接放行
  • vm.overcommit_memory=0 :则比较 此次请求分配的虚拟内存大小和系统当前空闲的物理内存加上swap,决定是否放行。
  • vm.overcommit_memory=2 :则会比较 进程所有已分配的虚拟内存加上此次请求分配的虚拟内存和系统当前的空闲物理内存加上swap,决定是否放行。

vm.overcommit_memory 这个参数又是干什么的呢?

  • linux对大部分申请内存的请求都回复"yes",以便能跑更多更大的程序。因为申请内存后,并不会马上使用内存,将这些不会使用的空闲内存分配给其它程序使用,以提高内存利用率,这种技术叫做overcommit。
  • 一般情况下,当所有程序都不会用到自己申请的所有内存时,系统不会出问题,但是如果程序随着运行,需要的内存越来越大,在自己申请的大小范围内,不断占用更多内存,直到超出物理内存,当linux发现内存不足时,会发生oom killer(oom=out-of-memory)。
  • 它会选择杀死一些进程(用户态进程,不是内核线程,哪些占用内存越多,运行时间越短的进程越有可能被杀掉),以便释放内存。

3、如果缓存数据丢失也可以接受

可以关闭appendonly

appendonly on

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com