项目场景:
使用redis存储验证码
问题描述:
BUG:本来以为是一个安稳的国庆节,没想到部署的项目还是出了问题
原始的异常代码:
Error in execution nested exception is lettuce core. Rediscommandexecutionexception MISCONF Redis
is configured to save RDB snapshots, but it is
currently not able to persist on disk. Commands
that may modify the data set are disabled, because
this instance is configured to report errors
during writes f RDB snapshotting fails (stop-writes
-on-bgsave-error option). Please check the Redis logs for
details about the RDB error
大致翻译一下:
MISCONF Redis配置为保存RDB快照,但目前无法在磁盘上持久化。可能修改数据集的命令被禁用,因为该实例被配置为在RDB快照失败时报告错误(stop-write -on-bgsave-error选项)。请检查Redis的日志RDB错误的详细信息.
原因分析:
提示:主要出现在这个redis上,我的redis 是使用宝塔linux在宝塔商店安装的,平时使用连接都没有问题,在隔一段时间之后,就会出现这种异常,导致使用redis 的服务都受到影响
解决方案:
根据它的提示,我们需要先查看一下redis的日志,那么问题来了日志保存在哪里呢?
-
打开配置文件,查看日志配置目录(搜索 logfile 大概在173行)
-
我们看到配置文件在"/www/server/redis/redis.log"目录,找到这个目录进入查看一下日志,找到最近的异常信息
cat redis.log
看到这里这个异常问题已经很明了了,“打开RDB文件web(在服务器根目录/etc/cron.d)保存失败:权限被拒绝”,博主怀疑是执行某条任务到该目录时没有执行权限.
解决办法执行命令:
chmod 777 /etc/cron.d
简单粗暴,之后应该这个异常问题就不会出现了,其实这个异常问题出现过好几次每次的解决办法都是重启redis,解决临时问题治标不治本大家一定要引以为戒!!!