在写入Redis (SET foo bar)期间,我得到以下错误:

MISCONF Redis被配置为保存RDB快照,但当前为 无法在磁盘上持久保存。可能修改数据集的命令是 禁用。有关错误的详细信息,请查看Redis日志。

基本上我理解的问题是,redis是不能在磁盘上保存数据,但不知道如何摆脱这个问题。

下面的问题也有同样的问题,它在很久以前就被抛弃了,没有答案,很可能没有尝试解决这个问题。


当前回答

我也面临着同样的问题。两个答案(被点赞最多的和被接受的)都只是暂时的解决办法。

此外,配置set stop-writes-on-bgsave-error no是一种可怕的忽略这个错误的方式,因为这个选项所做的是阻止redis通知写已经停止,并继续在快照中不写数据。这是简单地忽略这个错误。 请参考这个

至于在redis-cli的config中设置dir,当你重新启动redis服务时,这个问题也会被清除,并且会再次弹出相同的错误。在redis.conf中dir的默认值是。/,如果你以root用户启动redis,那么。/是/,写权限不被授予,因此会出现错误。

最好的方法是在redis.conf文件中设置dir参数,并对该目录设置适当的权限。大多数debian发行版都将它放在/etc/redis/redis.conf中

其他回答

在redis.conf第235行,让我们像这样修改配置

- stop-writes-on-bgsave-error yes
+ stop-writes-on-bgsave-error no

感谢大家检查这个问题,显然错误是在bgsave期间产生的。

对我来说,在shell中输入config set stop-writes-on-bgsave-error no并重新启动Redis解决了这个问题。

在我的情况下,这只是特权,我需要允许Redis接受传入的请求。

所以我重启了Redis服务通过Homebrew brew服务停止Redis和brew服务启动Redis和运行Redis服务器本地Redis -server。命令提示符要求我允许传入请求,然后它开始工作。

如果你在windows机器上本地运行Redis,试着“以管理员身份运行”,看看它是否有效。对我来说,问题是Redis位于“程序文件”文件夹中,默认情况下会限制权限。这是应该的。

但是,不要以管理员身份自动运行Redis。你不会想要授予它更多的权限。你想按规矩办事。

因此,我们能够通过作为管理员运行它来快速识别问题,但这不是解决方法。一种可能的情况是,你把Redis放在一个没有写权限的文件夹中,结果DB文件被存储在同一个位置。

您可以通过打开redis.windows.conf并搜索以下配置来解决此问题:

    # The working directory.
    #
    # The DB will be written inside this directory, with the filename specified
    # above using the 'dbfilename' configuration directive.
    #
    # The Append Only File will also be created inside this directory.
    #
    # Note that you must specify a directory here, not a file name.
    dir ./

将dir ./更改为具有常规读写权限的路径

你也可以将Redis文件夹整体移动到一个你知道拥有正确权限的文件夹。

一个更永久的修复方法可能是查看/etc/redis/redis.conf中200-250行左右的rdb特性的设置,这不是redis 2中的一部分。x天。

值得注意的是

dir ./

可更改为

dir /home/someuser/redislogfiledirectory

或者您可以注释掉所有保存行,而不用担心持久性。(见/etc/redis/redis.conf中的注释)

还有,别忘了

service redis-server stop
service redis-server start