java引入jedis并且关于开放redis端口问题
博主主页: 码农派大星.
数据结构专栏:Java数据结构
数据库专栏:数据库
JavaEE专栏:JavaEE
软件测试专栏:软件测试
关注博主带你了解更多知识
目录
1. 引入jedis
编辑 2. 关于java客户端开放redis端口问题
3. 连接redis服务器
redis服务器在官网公开了使用的协议: resp,任何一个第三方都可以通过上述协议,来实现一个和redis服务器通信的客户端程序,在java生态中,封装了resp协议,实现的redis客户端有很多,我使用的是jedis,jedis可以通过maven下载安装到我们的项目中
1. 引入jedis
我们在maven中央仓库中直接搜索jedis就可以找到了
选择一个版本,复制配置到我们的maven项目中
2. 关于java客户端开放redis端口问题
java开发程序,高度依赖Windows(idea)
我们Windows客户端想要访问redis服务器,就需要通过云服务器的外网IP来访问linux服务器,我们会想到修改外网IP,但是这是不够,redis的6379端口,默认是被云服务器的防火墙保护起来的,不能被外面访问,但是我们也访问不了,就可以在云服务器后台把防火墙6379端口放开,这样是不可以的,因为redis端口一旦公开在公网上,很容易被黑客攻击入侵
虽然tomcat端口也放开了,但是tomcat的端口是不容易被入侵的,但是redis的6379端口就很容易被入侵
所以我们想不开放redis端口,又想通过外网访问,我们就可以:
1. 把java程序放在linux上运行,把代码打成jar包,把jar包放到linux服务器上执行,手续比较繁琐
2. 配置ssh端口转发,把云服务器的redis端口,映射到本地主机
就是通过window主机访问云服务器的6379端口,于是就构造一个特殊的数据报,就是把要访问的redis请求,放到ssh数据报中,这个数据报就会通过22端口发生给服务器,服务器的ssh服务器程序,就能够解析出上述数据报,然后把数据报交给6379端口的程序
一个linux主机会存在的服务器有很多,ssh也可能需要来给多个端口传递数据,这时,为了区分不同端口,就会把服务器的端口在本地用另一个端口来表示
接下来教大家如何在云服务器上映射redis端口:
3. 连接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("tcp://127.0.0.1:8888");try (Jedis jedis = jedisPool.getResource()){//redis的各种命令,就能对应到jedis对象的各种方法String pong = jedis.ping();System.out.println(pong);}}}