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