Redis
服务器,在官网公开了使用的协议—— RESP
。任何一个第三方库都可以通过上述协议,来实现出一个和 Redis
服务器通信的客户端程序
Redis
协议的细节了Java
生态中,封装了 RESP
协议,实现的 Redis
客户端是有很多的。我们这里使用的是 jedis
(这里提供的 API
和 Redis
命令高度一致)
jedis
可以通过 maven
下载<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>5.1.5</version>
</dependency>
Linux
服务器只修改外网 IP 还不够
NAT
保护起来了。如果有人想偷东西,成本就非常高,先想办法进入小区,然后再想办法进入单元楼,再想办法进你家…直接在云服务器后台,把防火墙放开,不就行了吗?
Redis
的端口一旦公开到公网上,就特别容易被入侵(不出三天,就要被入侵)那要是我们给 Redis
换一个端口,是不是就安全了呢?
现在不能开放 Redis
端口,但是我们又想要自己能通过外网访问,怎么办呢?
Java
程序也在 Linux
上运行这就需要我们把自己的代码打成可执行的 jar
包,然后把 jar
包拷贝到 Linux
服务器上执行
ssh
端口转发,把云服务器的 Redis
端口,映射到本地主机ssh
功能非常强大,其中很重要的特性,就是能够支持端口转发。相当于通过 ssh
的 22
端口,来传递其他端口的数据
Windows
主机,访问云服务器的 6379
端口,于是就构造了一个特殊的 ssh
数据报,就把要访问 Redis
的请求,放到 ssh
数据报里
这个数据就会通过 22
端口发给服务器,服务器的 ssh
服务器程序,就能够解析出上述的数据报,然后把数据报交给 6379
端口的程序(ssh
起到了一个中介的效果)
一个 Linux
主机上,存在的服务器有很多,ssh
也可能需要来给多个端口传递数据,这个时候,为了区分不同的端口,往往会把服务器的端口在本地用另外一个端口来进行表示
127.0.0.1:8888
就相当于是访问 Linux
服务器的 6379
了只需要进行简单的配置,后续就把云服务器的端口就当成一个本地的端口使用即可
127.0.0.1
这样的 IP 来连接 Redis
服务器即可import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
public class RedisDemo {
public static void main(String[] args) {
// 连接到 Redis 服务器上
JedisPool jedisPool = new JedisPool("localhost",6379);
// 从 Redis 连接池中取一个连接出来
// 连接用完之后要释放,此处的释放不一定是真的关闭 TCP 连接,而是将连接放回到池子里
// 因为是在 try 后面的()里面进行取连接的,执行结束后会自动关闭
try(Jedis jedis = jedisPool.getResource()) {
// Redis 的各种命令,就对应到 Jedis 对象的各种方法
String pong = jedis.ping();
System.out.println(pong);
}
}
}
URL
,仅仅是当前开发阶段这么写,后续如果我们的程序要部署到云服务器,此时就得按照云服务器的事迹情况来写这里的 IP 和端口了