每当我执行任何修改redis中数据的命令时,我都会收到以下错误
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.
我在mac上使用brew安装了redis。如何获取redis-server记录信息的日志文件的位置。我试着寻找redis conf。文件,但找不到它。
[1] redis conf文件[2] redis日志文件的默认位置。
如何摆脱上述错误,并能够执行以redis方式修改数据的命令。
答案 0 :(得分:15)
使用brew安装时,日志文件设置为stdout。您需要编辑/usr/local/etc/redis.conf
并将日志文件更改为其他内容。我设定为:
logfile /var/log/redis-server.log
您还将确保运行redis的用户具有对日志文件的写入权限,否则redis将无法完全启动。然后重新启动redis:
brew services restart redis
重新启动后,错误会显示在日志中需要一段时间,因为它在redis失败定时刷新后发生。你应该看到类似的东西:
[7051] 29 Dec 02:37:47.164 # Background saving error
[7051] 29 Dec 02:37:53.009 * 10 changes in 300 seconds. Saving...
[7051] 29 Dec 02:37:53.010 * Background saving started by pid 7274
[7274] 29 Dec 02:37:53.010 # Failed opening .rdb for saving: Permission denied
在brew安装之后,它会尝试保存到/usr/local/var/db/redis/
,因为redis可能作为当前用户运行而不是root用户,所以它无法写入。一旦redis有权写入目录,您的日志文件就会说:
[7051] 29 Dec 03:08:59.098 * 1 changes in 900 seconds. Saving...
[7051] 29 Dec 03:08:59.098 * Background saving started by pid 8833
[8833] 29 Dec 03:08:59.099 * DB saved on disk
[7051] 29 Dec 03:08:59.200 * Background saving terminated with success
并且stop-writes-on-bgsave-error
错误将不再出现。
答案 1 :(得分:7)
所以我觉得在这里添加一个答案有点晚了但是因为我对你的问题感到疑惑,因为我有同样的错误。我通过改变我的redis.conf dir 变量来解决这个问题:
# The filename where to dump the DB
dbfilename dump.rdb
# 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 /root/path/to/dir/with/write/access/
默认值为:./,因此根据您启动redis服务器的方式,您可能无法保存快照。
希望它有所帮助!
答案 2 :(得分:4)
通常是因为许可限制。就我而言,它的redis禁用写入选项。
您可以尝试在shell中运行redis-cli
,然后运行以下命令:
set stop-writes-on-bgsave-error yes
答案 3 :(得分:1)
在我的情况下,我通过以下步骤解决了这个问题
原因:默认情况下,redis存储数据@ ./,如果redis与redis用户一起运行,这意味着redis将无法在./文件中写入数据,那么您将面临上述错误。
解决方案: 步骤#1(输入redis可以执行写操作的有效位置) root @ fpe:/ var / lib / redis #vim /etc/redis/redis.conf
dir / var / lib / redis#(此位置必须有权让redis用户写入)
步骤#2(连接到redis cli和map目录以编写并发出以下变量)
127.0.0.1:6379> CONFIG SET目录“/ var / lib / redis”
127.0.0.1:6379> BGSAVE -
这将使redis能够在转储文件上写入数据。
答案 4 :(得分:1)
修复此错误的步骤:
通过输入 log_statement = all
redis-cli
然后尝试设置键值
127.0.0.1:6379> config set stop-writes-on-bgsave-error no
答案 5 :(得分:0)
检查以下地点:
/usr/local/Cellar/redis...
/usr/local/var/log/redis.log
/usr/local/etc/redis.conf
此错误通常表示写入权限存在问题,请确保您的RDB目录是可写的。
答案 6 :(得分:0)
正在通过 github 讨论,建议的解决方案是 运行
<块引用> <块引用> <块引用>config set stop-writes-on-bgsave-error 没有 在 redis-cli 中。 这是链接 https://github.com/redis/redis/issues/584#issuecomment-11416418