公司项目开发环境需要使用到 Redis,申请基础技术支撑平台的 Redis 中间件比较麻烦,项目组也不知道具体流程,而且时间可能比较长。
现在的情况是,项目因为 Redis 启动报错。
这种情况下,我们项目组就自行在虚拟机上临时搭建了 Redis。当然为了效率,搭建的是单机版的,采用的是公司提供的安装包与运行脚本。
本来这都是很简单的事情,但是安装完毕之后,在服务器上可以正常登陆访问。
解压后的Redis目录如下:
启动Redis
./redis-cli
因为是在本机安装的,也没有密码,这样是直接可以登陆的。
客户端工具连接Redis报错
我们使用Redis客户端连接工具AnotherRedisDesktopManager连接Redis,竟然报错了,报错信息如下:
redis-cli 报错:redis Could not connect to Redis at 127.0.0.1:6379: Connection refused
这个是没有想到的。这说明服务启动没问题,但是连接被拒绝了。
下面解决方案参考这篇文章:
redis bind连不上报错redis Could not connect to Redis at 127.0.0.1:6379: Connection refused
以及这篇文章:
Could not connect to Redis at 127.0.0.1:6379:由于目标计算机积极拒绝,无法连接
根据上述文章所说,我们知道:
bind表示的是指定本机可以接受连接的网卡地址,比如redis服务器上有一个公网IP(114.114.114.114),一个内网IP(192.168.1.109),如果该redis服务器需要被本机及以外的服务器访问(比如说内网的服务器),此时需要在redis.conf中绑定内网ip:
bind 192.168.1.109 127.0.0.1
意思是说,使用192.168.1.109 这个ip来接收来自外部的连接请求。
未修改的原始状态是:
bind 127.0.0.1
这样的绑定只能在服务器上自己连接自己,就像我上面连接的一样,只需要通过./redis-cli命令就登陆上了。但是这种方式在非服务器的地方连接是失败的。
上面给出了一个方案,还有一种方案是,直接注释掉该绑定ip,即注释掉:
# bind 127.0.0.1
这代表的是开启所有ip地址的访问权限。
把redis.conf文件里面的protected-mode yes的“yes”改成“ no ”,
- yes 保护模式,只允许本地链接
- no 保护模式关闭
此时再通过客户端工具连接Redis已经成功。