当前位置: 首页 > news >正文

使用Java连接redis以及开放redis端口的问题

前面分享了许多关于Redis的数据类型的文章,文章也介绍了如何使用对应的数据类型来保存数据,以及如何对数据进行增删改查等等;但是作为一个Java研发程序员,我们在开发阶段要如何将redis集合到我们的项目中,也就是如何使用redis这一个优秀的中间件作为我们的开发工具呢?接下来我就会详细的讲一下如何进行连接,以及如何具体的使用。

首选Java官方提供了一个RESP协议供我们使用,任何一个第三方都可以通过这个协议来实现一个与redis服务端通信的客户端程序,当然我们这里不是要从头教大家如何通过这个协议去写一个第程序来与redis服务端进行通信,这不可能,已经有大佬帮我们写好了一个客户端来给我们使用,我们要学的就是如何使用这个客户端,这个客户端就是著名的“Jedis“,而且这个Jedis的API都是和redis高度相似的,这就很利于我去使用Jedis去和redis进行通信,节约了再次学习相关语法的时间、

Jedis是一个客户端,也是一个依赖,我们要引入一个依赖,可以再maven中央仓库进行下载。

https://mvnrepository.com/

1、在搜索框搜索Jedis、点击搜索,选择Jedis进行详情页面

2、选择版本,我们不用选择最新的版本,可以看到最新的版本还在测试阶段,我们可以选择稳定的,比较多人下载的,并且比较接近新版本的版本;如下图我们可以去选择5.1.5的版本,你们可以去选择你们想要的版本;

3、点击想要的版本,复制下面的这段到我们的maven项目中,我们就真正的引入这个依赖到我们的项目中;

4、引入依赖之后,如果看到爆红,我们可以点击右上角的刷新按钮去刷新,maven就回去去检查并下载相关的依赖;

到这里我们仅仅是完成了10%,因为接下来要如何连接redis服务端才是重中之重;我们redis是安装在云服务器上的,要在本地访问到,就得开启云服务器的6379端口,这样我们就可以通过云服务器的外网IP访问到redis服务器,但是开启这个端口,就相当于把redis暴露在网络中,任何一个人都可以通过云服务器的ip去访问到你的redis服务器,如何redis存的数据相当重要,那么你的数据就有可能被人剽窃,如果是被对手公司剽窃了,那你就不是仅仅丢掉年终奖这么简单了,所以这种直接开放端口肯定是行不通的。可能这里有人要问,那为什么可以开放别的端口呢?比如8080,首先8080端口开放是因为做了保护,黑客想要通过8080端口剽窃数据是非常难的,至少目前是的,以后会怎么样就不知道了,所以目前开放8080是安全的;

既然我们为了安全不能开放6379端口号,那我们就只有以下两种方法去使用redis服务器了;

1.打包成jar,放到云服务器上运行

这样子虽然能避免开放端口号,但是不便于我们在开发阶段进行调试,因为如果我们使用这种方法,每一次调试都得将程序打包成jar,放到云服务器上运行,这将会非常麻烦,所以在开发阶段我们是使用第二种方法,ssh隧道。

2.使用xsehll的ssh隧道进行通信

首先我们使用xshell去连接云服务器,使用的就是ssh协议,ssh协议支持端口转发,原理就是,xshell会通过ssh隧道监听本机的一个端口,我们只要访问本机的这个端口,xshell就会根据我们要发送给redis的数据去构造一个特殊的数据报,转发给云服务器上的redis服务器,这样我们就实现了在开发阶段,在本地就能很安全的去访问和使用redis服务器;

打开xshell,找到云服务器,右击找到属性

2、找到ssh-隧道,点击添加

添加映射规则

源主机写localhost,监听端口就是开发使用的主机的端口号,可以使用8888或者其他未被使用的;

目的主机也可以写localhost,目的端口就是云服务器上redis的端口,默认6379,除了以上的配置,你还得去修改redis的配置文件,输入以下指令去修改redis的配置文件

将配置内容:bind 127.0.0.1 ::1改成bind 0.0.0.1,改成这样就运行别的主机访问;

保护模式从yes改为no

通过以上配置,才算真正的能够在本机去访问云服务器上的redis服务端;

接下来简单讲一下如何使用Jedis操作redis:

public static void main(String[] args) {//创建连接池:JedisPool("tcp://127.0.0.1:8888") 连接到本地 8888 端口的 RedisJedisPool jedisPool=new JedisPool("tcp://127.0.0.1:8888");//使用 try-with-resources:自动管理 Jedis 连接的关闭try(Jedis jedis=jedisPool.getResource()){test01(jedis);}catch (Exception e){e.printStackTrace();}
}
public static void test01(Jedis jedis){System.out.println("set 和 get");//清空数据库:jedis.flushAll() 会删除所有数据库中的所有键jedis.flushAll();//设置键值对:jedis.set("key1", "111") 将 "key1" 的值设置为 "111"jedis.set("key1","111");//获取值:jedis.get("key1") 读取 "key1" 的值并打印String value=jedis.get("key1");System.out.println(value);
}

从上面两段代码可以看出来Jedis的方法和redis还是高度吻合的,非常容易上手;

http://www.dtcms.com/a/446572.html

相关文章:

  • Git应用详解:从入门到精通
  • 【Linux】 Ubuntu 开发环境极速搭建
  • asp学习网站网站由哪三部分组成
  • 新增网站备案时间郑州怎么做外贸公司网站
  • 十个最好的网站广州做网站厉害的公司
  • Freqtrade - Configuration 所有配置大全
  • 网站宣传与推广国家高新技术企业管理办法
  • 推广网站平台免费网站建设的几大要素
  • 网站建设知名公司排名网站克隆 有后台登录
  • 5-20 WPS JS宏 every与some数组的[与或]迭代(数组的逻辑判断)
  • Linux学习笔记--IIC子系统
  • 网站公网安备链接怎么做百度上推广一个网站该怎么做
  • 狗头网网站营销运营平台
  • LeetCode 236. 二叉树的最近公共祖先
  • 理解 Python 装饰器:@ 的强大功能
  • C++进阶(7)——包装器
  • Redis应用场景(黑马点评快速复习)
  • 泉州建站模板搭建深圳工业设计有限公司
  • 外贸出口工艺品怎么做外贸网站想自学做网站
  • 【Docker项目实战】使用Docker部署Dokuwiki个人知识库
  • 建设实验中心网站c2c网站价格
  • arp broadcast enable 概念及题目
  • 在搜狐快站上做网站怎么跳转做商品网站需要营业执照
  • 为什么多智能体系统需要记忆工程
  • C++:string 类
  • [crackme]019-CrackMe3
  • 宠物寄养网站毕业设计营销网站建设专业团队在线服务
  • C++11学习笔记
  • 搜狐快速建站郴州市做网站
  • 在Linux中重定向,复制cp,硬链接的区别,Linux底层存储数据原理。