远程连接 Redis 服务端

在之前的项目中我对于 Redis 的使用,仅限于一些最最基本的功能,并没有深入到真实环境下的场景,例如在分布式环境下如何连接远程服务器上的 Redis Server,所以第一步就是研究怎么使用Redis-Cli连接远程的 Redis Server。

一、配置 Redis Server 绑定的 IP 地址

打开redis.windows.conf文件,找到如下节点:

# By default Redis listens for connections from all the network interfaces
# available on the server. It is possible to listen to just one or multiple
# interfaces using the "bind" configuration directive, followed by one or
# more IP addresses.
#
# Examples:
#
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1
bind 192.168.0.100

由于安全问题,Redis Server 不应绑定公网 IP,所以 Redis Server 可绑定局域网 IP 地址以实现局域网内 Redis 集群的互联。由于局域网内就我一台机子,所以我就使用本机来作为局域网内的远程主机,本机 IP 是192.168.0.100,所以就可以如上绿色区域配置。

二、配置 Redis Server 绑定的端口

打开redis.windows.conf文件,找到如下节点:

# Accept connections on the specified port, default is 6379.
# If port 0 is specified Redis will not listen on a TCP socket.
port 6379

Redis Server 默认绑定6379端口,为了安全起见,建议修改为其它端口。本文以默认6379端口和自定义端口5789为例进行说明。

由于 Windows Server 如果开启了防火墙的话,6379 / 5789端口是拒绝外部客户端访问的,所以我们需要先在防火墙中新建入站规则以允许6379 / 5789端口的访问权限。

三、开始通过 IP 地址连接远程 Redis Server 服务端

启动 Redis Server 服务端,打开PowerShell,进入 Redis Client 所在的目录,执行远程连接命令(命令的参数可通过redis-cli --help命令来查看):

.\redis-cli -h 192.168.0.100

其中,-h参数表示后面指定连接的服务器的地址。执行完成后如果成功如下图所示:

图 1

如果端口不是6379,例如5789,那么就可以使用-p参数来指定端口:

.\redis-cli –h 192.168.0.100 –p 5789
图 2

那么,如果我想用密码登录怎么办?其实,在redis.windows.conf文件中可以配置登录密码:

# Require clients to issue AUTH <PASSWORD> before processing any other
# commands. This might be useful in environments in which you do not trust
# others with access to the host running redis-server.
#
# This should stay commented out for backward compatibility and because most
# people do not need auth (e.g. they run their own servers).
#
# Warning: since Redis is pretty fast an outside user can try up to
# 150k passwords per second against a good box. This means that you should
# use a very strong password otherwise it will be very easy to break.
#
# requirepass foobared
requirepass e2#rMb6v5

如上配置,我设置了密码为e2#rMb6v5,保存后重启 Redis Server 重新连接。

当我使用上面的远程登录命令重新登录的时候发现怎么也登录不上,原因是什么呢?原因就是因为我没有指定登录密码,所以登录不上。所以我加上密码试试:

.\redis-cli -h 192.168.0.100 -p 5789 -a e2#rMb6v5

于是就登录成功了:

图 3

然后简单的测试一个命令:

图 4

可以看出已经成功登录并成功执行了命令,这说明远程连接所需的服务端配置已经完成了。所以下一步就是要搞清 Redis 协议,然后再来设计自定义的 Redis Client For .NET。

Tags: redis