在写入Redis (SET foo bar)期间,我得到以下错误:
MISCONF Redis被配置为保存RDB快照,但当前为 无法在磁盘上持久保存。可能修改数据集的命令是 禁用。有关错误的详细信息,请查看Redis日志。
基本上我理解的问题是,redis是不能在磁盘上保存数据,但不知道如何摆脱这个问题。
下面的问题也有同样的问题,它在很久以前就被抛弃了,没有答案,很可能没有尝试解决这个问题。
在写入Redis (SET foo bar)期间,我得到以下错误:
MISCONF Redis被配置为保存RDB快照,但当前为 无法在磁盘上持久保存。可能修改数据集的命令是 禁用。有关错误的详细信息,请查看Redis日志。
基本上我理解的问题是,redis是不能在磁盘上保存数据,但不知道如何摆脱这个问题。
下面的问题也有同样的问题,它在很久以前就被抛弃了,没有答案,很可能没有尝试解决这个问题。
当前回答
在我的情况下,它发生了,因为我刚刚安装了redis使用快速的方式。所以redis不是以根用户身份运行。 我可以按照他们快速入门指南中“更正确地安装Redis”部分的说明来解决这个问题。这样做之后,问题得到了解决,redis现在以根用户身份运行。来看看。
其他回答
所有这些答案都不能解释RDB保存失败的原因。
作为我的情况,我检查了redis日志,发现:
14975:M 18 Jun 13:23:07.354 #后台保存被信号9终止
在终端执行如下命令:
sudo egrep -i -r 'killed process' /var/log/
它显示:
/var/log/kern.log.1:Jun 18 13:23:07 10-10-88-16 kernel: [28152358.208108] Killed process 28416 (redis-server) total-vm:7660204kB, anon-rss:2285492kB, file-rss:0kB
就是这样!这个进程(redis保存rdb)被OOM杀手杀死
是指:
https://github.com/antirez/redis/issues/1886
查找哪个进程被Linux OOM杀手杀死
# on redis 6.0.4
# if show error 'MISCONF Redis is configured to save RDB snapshots'
# Because redis doesn't have permissions to create dump.rdb file
sudo redis/bin/redis-server
sudo redis/bin/redis-cli
如果你正在使用docker/docker-compose,并且想要阻止redis写入文件,你可以创建一个redis配置并挂载到容器中
docker.compose.override.yml
redis:¬
volumes:¬
- ./redis.conf:/usr/local/etc/redis/redis.conf¬
ports:¬
- 6379:6379¬
您可以从这里下载默认配置
在redis.conf文件中,确保注释掉这3行
save 900 1
save 300 10
save 60 10000
您可以在这里查看更多删除持久数据的解决方案
一个更永久的修复方法可能是查看/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
如果你在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文件夹整体移动到一个你知道拥有正确权限的文件夹。