一个新项目使用redis做纯缓存,在本机中无障碍使用,redis放到服务器就出现上面的错误。
折腾了小一天排查各种可能性终于解决问题。最后不使用任何框架直接使用jedis 才发现问题的根本是redis开启了保护模式。
解决如下:连接redis客户端,使用命令
- 127.0.0.1:6379> config set protected-mode "no"
搞定。
根据一天的收拢连接不上redis存在的其他可能性。
1、redis没有启动(好囧,真的出现过这种情况)。
2、ip 或 host 不正确。
3、端口没有开放。在redis官群里有问同学说他有一次出现这个问题是因为16379端口没有开放。
4、注释掉reids.conf 的bind 。
=====================前方高能=====================
在新装的redis中,默认开启redis保护模式,只能本地访问。
解决办法在protected-mode配置项目上说的很明白了,
或、绑定ip地址bind ip
或、添加连接密码项requirepass password
或、关闭保护模式protected-mode no
值得说的是我就这么搞了也不好使,后来通过config get * 命令发现redis默认读取的配置文件竟然不是我修改的redis.conf(原因待查)。启动时指定配置文件后成功。
最终我的配置是,bind 本机固定ip, protected-mode yes,requirepass password。
最后web端成功连接,redis客户端连接方式 /redis-cli -h ip -p host -a password。