在写入Redis (SET foo bar)期间,我得到以下错误:
MISCONF Redis被配置为保存RDB快照,但当前为 无法在磁盘上持久保存。可能修改数据集的命令是 禁用。有关错误的详细信息,请查看Redis日志。
基本上我理解的问题是,redis是不能在磁盘上保存数据,但不知道如何摆脱这个问题。
下面的问题也有同样的问题,它在很久以前就被抛弃了,没有答案,很可能没有尝试解决这个问题。
在写入Redis (SET foo bar)期间,我得到以下错误:
MISCONF Redis被配置为保存RDB快照,但当前为 无法在磁盘上持久保存。可能修改数据集的命令是 禁用。有关错误的详细信息,请查看Redis日志。
基本上我理解的问题是,redis是不能在磁盘上保存数据,但不知道如何摆脱这个问题。
下面的问题也有同样的问题,它在很久以前就被抛弃了,没有答案,很可能没有尝试解决这个问题。
当前回答
对我来说
config set stop-writes-on-bgsave-error no
我重新加载我的mac,它工作
其他回答
对我来说
config set stop-writes-on-bgsave-error no
我重新加载我的mac,它工作
重新启动redis服务器。
macOS (brew): brew服务重启redis。 Linux: sudo service redis restart / sudo systemctl restart redis . sh Windows: Windows + R ->类型服务。msc,输入->搜索Redis,然后单击restart。
我个人在用Brew升级redis (Brew升级)后遇到了这个问题。 重启笔记本电脑后,它立即工作了。
我也遇到过类似的问题,这背后的主要原因是redis的内存消耗。 我的EC2机器有8GB内存(大约7.4 gb可用)
当我的程序运行时,RAM使用率上升到7.2 GB,只剩下大约100MB的RAM,这通常会触发MISCONF Redis错误…
可以使用htop命令确定内存消耗。执行htop命令后,查找Mem属性。如果它显示出较高的消耗(比如我的情况是7.2GB/7.4GB),那么最好将实例升级为更大的内存。 在这种情况下,使用set stop-writes-on-bgsave-error no对服务器来说将是一场灾难,并可能导致中断服务器上运行的其他服务(如果有的话)。所以,最好避免配置命令和升级你的REDIS机器。
供您参考:您可能需要安装htop才能使其工作:sudo apt-get install htop
另一种解决方案是在你的系统上运行一些其他的内存大的服务,检查在你的服务器/机器/实例上运行的其他服务,如果没有必要就停止它。要检查机器上运行的所有服务,请使用service——status-all
对于那些直接粘贴config命令的人,建议在使用这些命令之前,请做一些研究,至少警告用户。正如@Rodrigo在评论中提到的:“忽视错误看起来并不酷。”
——更新
你也可以配置maxmemory和maxmemory-policy来定义当达到特定的内存限制时Redis的行为。 例如,如果我想保持6GB的内存限制,并从DB中删除最近最少使用的键,以确保redis mem的使用不超过6GB,那么我们可以设置以下两个参数(在redis.conf或CONFIG set命令中):
maxmemory 6gb
maxmemory-policy allkeys-lru
你可以为这两个参数设置很多其他的值,你可以从这里阅读:https://redis.io/topics/lru-cache
在采取任何行动之前检查你的Redis日志。这个线程中的一些解决方案可能会删除你的Redis数据,所以要小心你在做什么。
在我的例子中,机器的内存快用完了。当主机上没有更多的空闲磁盘空间时,也会发生这种情况。
是的,这是因为当前用户没有修改“dump.rdb”的权限。
因此,除了创建一个新的RDB文件,您还可以对旧文件授予权限(更改其所有权)。
在redis-cli中输入:
配置get dir
你会得到"/usr/local/var/db/redis"(这是redis写入数据的位置)
使用终端前往此位置
cd
cd /usr/local/var/db
输入以下命令(使用我们的用户名):
sudo chown -R [username] db
这将改变为所有者。
这对我很有用。