Redis:客户端连接远程服务器方法

问题描述

昨晚在公司,本想通过远程连接测试下redis的benchmark的性能,并且跟自己修改源码实现的部分功能做对比,结果死活连接不上远程redis服务器!

系统配置:客户端ubuntu16.04  /  服务器tlinux 2.2   Redis都是4.0稳定版本

另外需要注意的是:服务器是公司的远程服务器,我们只能通过跳板机通过ssh从端口 36000 远程登陆该服务器

连接方法

第一步:开启redis 允许外网IP 访问

在 Linux 中安装了redis 服务,当在客户端通过远程连接的方式连接时,报could not connect错误。

错误的原因很简单,就是没有连接上redis服务,由于redis采用的安全策略,默认会只准许本地访问。

修改redis的配置文件redis.conf, 将配置文件中的bind 127.0.0.1注释掉。

修改完后,服务器端需要使用配置文件重启

./redis-server ./redis.conf

第二步:修改配置文件中protected-mode配置项

配置文件中protected-mode配置项默认开启yes,redis处于保护模式状态,会拒绝来自其它主机的连接。

解决方式:将protected-mode配置项设为no。
 

第三步:修改 服务器Linux 的防火墙(iptables),开启redis服务端口,默认是6379

注:这一步可选的!如果你的服务器防火墙有开放6379,那么你做完前面两步大概率就可以连接服务器进行操作了。

但是我用的公司远程服务器,然后登陆端口是36000, redis默认的6379端口估计没开,做完前面两步出现的问题是这样的:

(1)使用6379:./redis-cli -h 服务器ip -p 6379   出现拒绝连接的情况

(2)改用36000:./redis-cli -h 服务器ip -p 36000 连接成功了,但是。。。

如上图所示,这样子连接虽然连接成功,但是操作的时候,就报这两种错误:

Error: Protocol error, got "S" as reply type byte  和  Error: Connection reset by peer

注意这个时候服务器的配置文件中port是默认的6379,然后我把它改为36000,重新试,没用,还是这个错误。

最后我感觉是服务器防火墙可能是没开6379的端口,所以不允许客户端用这个端口访问,所以出现拒绝连接的情况。于是做出如下修改:

1 编辑防火强配置文件 

vim /etc/sysconfig/iptables

2 添加一行:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT

3 重启服务:

service iptables restart

当然我把配置文件中的port也改回了默认的6379,重启之后就可以用6379连接啦!

----------

当然还有一个问题:我最后防火墙允许6379访问,然后就能用6379连接并操作了,但是我之前用36000连接成功,但是操作失败,这是为什么呢? 

既然能通过36000远程登陆该服务器,说明这个端口本来就是开着的,所以我能通过这个端口连接成功,但是操作的时候就失败咋回事还不清楚!
 

 

要使用Redis客户端进行远程连接,您需要遵循以下步骤: 1. 安装Redis客户端:您可以使用各种编程语言提供的Redis客户端库,如Python的redis-py,Java的Jedis等。选择适合您项目的客户端库,然后根据其文档进行安装。 2. 确保Redis服务器已启动:在远程连接Redis之前,确保Redis服务器已在远程主机上启动并正在运行。 3. 获取Redis服务器的IP地址和端口号:您需要知道Redis服务器的IP地址和端口号,以便能够建立与该服务器连接。通常,默认情况下,Redis服务器的IP地址是远程主机的IP地址,端口号是6379。 4. 建立远程连接:使用您选择的Redis客户端库提供的方法,通过指定Redis服务器的IP地址和端口号,建立与远程服务器连接。具体的代码取决于您使用的客户端库和编程语言。 以下是使用Python和redis-py库建立远程连接的示例代码: ```python import redis # 建立与远程Redis服务器连接 r = redis.Redis(host='远程主机的IP地址', port=6379, password='可选的密码') # 执行Redis命令 r.set('key', 'value') print(r.get('key')) ``` 请注意,在上面的示例中,我们使用了`host`参数来指定远程主机的IP地址,并使用`port`参数来指定Redis服务器的端口号。如果远程Redis服务器有密码保护,您还需要使用`password`参数提供密码。 根据您的具体需求和所选择的编程语言,上述过程可能会有所不同。请参考您所选择的Redis客户端库的文档以获取更多详细信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值