头疼的Redis
最近笔者有个项目用到了Redis缓存
, 不是分布式哈(仅仅想让自己的项目有点逼格), 说实话无论从实用性还是上手难度, 在数据存储
界Redis绝对是当家头牌.
闲聊后, 进入正题:由于我的机子匮乏的外存, 我实在不忍心再让仅剩的C盘容量让Redis分一杯羹(到底不是windows娘家的, 没有牌面), 于是乎, 我想到了将redis部署到了腾讯云上(学生价那个) 简单介绍一下远程连接操作步骤(重点不是配置)
vi redis.conf
进入配置文件 注释掉 bind 127.0.01- 进入redis客户端 ,修改保护进程
config set protected-mode "no"
- 切出来(不是退出来!) 打开远程连接通道
redis-cli -h 你的服务器ip -p 6379
(当然前提是你的6379端口开启了 一般安装的教程都会提示你)- 紧接着输入
ping
如果结果出现PANG
连接成功
远程连接后, 第一天我测试了一下很爽, 很开心的收工后(开心的像个小孩纸) 第二天, 打开项目发现缓存数据崩了, 界面干枯枯的, 我懵了, 我以为又遇到了程序员常见的玄学问题之一: 第一次运行成功,往后经常失败.
究其原因
-
首先我的代码没有动过, 昨天仅仅就是配了一个缓存而已, 还测试通过了, 于是我先打开redis客户端(眼熟吧,挺好用的,除了界面丑点) 看看缓存数据在不在, 结果直接连接不上
-
连接不上, 我便立刻想到服务器的redis是不是挂了, 结果就很奇葩
运行好好的, 为此我还特地从服务器查看了缓存数据, 都在就是远程连接不上 -
突然笔者灵机一动(动画片看多了哈哈哈) 想到再试一次远程连接的步骤
发现到第三步出问题了
报错
MISCONF 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.
简单来说就是服务器曾经强制关闭redis 导致不能持久化, 出现这个有这么几种情况(我的经历和百度得出的结论, 第三点不属于这个类型,但也是导致远程连接不上的原因之一)
- 1.你被预言家有验了,确实你曾暴力关闭redis, 人家有情绪,就不让你连了(自作孽不可活哈哈哈哈哈)
- 2.你的网络不稳定,这个redis无能为力, 地是块好地,奈何你肥料不够, 那人家就有权利罢工,寻找好肥料的时候才连接上
- 3.设置过密码, 其实没必要这么做 并不是所有带密码东西看上去都很牛逼, 有的时候容易被自己的骚操作秀到头皮发麻
-
TOP1 密码忘了(别太高估你的记忆力, 笔者层级平均每天一堆工具就要记住10个密码左右, 后来自闭了好几天)
-
TOP2 Redis会搞你心态 当你自以为
config set password '牛逼哄哄的密码'
, 你的心态就开始炸了:你会发现此后你每执行一条redis命令都会报错:
No Authentic
(没有认证,说白了你得输入密码才能执行), OK 然后你一遍遍执行auth 密码
相信我, 任何有耐心的人此刻都想骂娘.
-
当然,可能还有其他原因,目前笔者遇到就是这些, 下面是完整的解决办法
解决办法
1.重新执行开头所说的连接步骤, 到了第三步/第四步如果报了和我上面一样的错误,那么
你需要进入redis里 输入命令
config set stop-writes-on-bgsave-error no
强制关闭报错
2.再次执行第三步: redis-cli -h 192.144.215.180 -p 6379
3.继续执行Ping
会发现PANG如约而至, 有时候第三步没问题 ping的时候报错,解决方式还是一样.
最后再说一句
有时候遇到问题 先别急去百度, 有的时候多看看报错提示, 以及多想想曾经正确运行和当下有什么变化时, 这个时候解决的思路就会清楚很多, 速度也要快很多.
手工 碎觉!