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

Java 中使用 Redis

相关知识

RESP

Redis 服务器,在官网上公开了使用的协议,RESP

任何以一个第三方库都可以通过上述协议,来实现一个和 Redis 服务器通信的客户端程序

java 生态中,封装了 RESP 协议,实现的 Redis 客户端很多,此处使用 jedis 

jedis 提供的 API 和 Redis 命令 高度一致

jedis 可以通过 Maven 来下载安装

准备工作

引入依赖

仓库地址  Maven Repository: redis.clients » jedis

在创建 Maven 项目时,把 jedis 的依赖拷贝到 pom.xml 中

配置端口转发

java 的开发,是高度依赖 Windows(IDEA)

从 Redis 客户端 到 Redis 服务器,需要通过云服务器的外网 IP 来访问到 Linux 服务器

Redis 服务器安装在云服务器上,而编写的代码则在本地主机上

要想让本地主机能访问到 redis,需要把 redis 的端口通过云服务器后台页面的“防火墙/安全组”放开端口到公网上,但此操作身份危险(redis 端口会被入侵)

因此可以使用 端口转发 的方式,直接把服务器的 redis 端口映射到本地

直接让 java 程序在 Linux 服务器上运行,需要把代码打成 jar 包,再把 jar 拷贝到 Linux 服务器上执行

虽然在该过程中,可以通过一些第三方库简化上述操作,但是还是会过于繁杂

在 xshell 中,操作如下:

1)右键云服务器的对话,选择属性

2)点击隧道 -> 配置转移规则

3)使用该会话连接服务器

此时,访问本地的 8888 端口,就相当于是访问对应服务器的 6379 端口

xshell 必须与服务器处于连接状态,这样的映射才有效

操作原理

配置 ssh 端口转发,把云服务器上的 redis 端口,映射到本地主机

此处的操作是,ssh 进行端口的映射,把服务器的 6379 端口映射到 本地的 8888

在本地,xshell 远程连接到 Linux 服务器

ssh 协议 / 程序   默认走 22 端口

ssh 功能强大,支持端口转发,相当于是通过 ssh 的22端口,来传递其他端口的数据

本身我们需要通过 Windows 主机,访问云服务器的 6379 端口

于是构造了一个特殊的 ssh 数据报,把访问 Redis 的请求,放到 ssh 数据报里

这个数据报会通过 22 端口发送给服务器

Linux 服务器的 ssh 服务器程序会解析出上述的数据报

一个 linux 主机上,存在的服务器很多,ssh 可能需要给多个端口传递数据

此时,为了区分不同的端口,往往会把服务器的端口在本地用另外一个接来进行表示

——> ssh 端口转发 / ssh 端口映射 / ssh 隧道

注意:

1)当 ssh 连接上后,端口转发才生效(ssh 连接断开,端口转发失效)

配置之后,一定要断开之前的连接,重新连接才能生效

2)最开始安装 Redis 服务器时,要配置绑定的 IP,关闭保护模式

连接 Redis Server

1)使用 JedisPool 描述 Redis 服务器的位置,使用 URL 表示(后续根据实际情况进行改写)

2)使用 getResource 和服务器建立连接

3)连接使用完毕需要 close 关闭,也可以使用 try 自动关闭

4)通过 ping 方法可以检测连接是否正确建立

基础操作

jedis 这个库的本质是针对 Redis 的各种命令进行封装

调用某个方法,就相当于是在 Redis 客户端敲下相应的命令

通用操作

get  set

exists  del

del 可以删除多个 key, 以 变长参数列表 的方式体现. 返回值是实际删除的 key 的个数

keys

set 是无需唯一的,所以使用 Set 类型存储

expire  ttl


type

string

mget  mset

getrange  setrange

append

incr  decr

list

lpush  rpush  lrange

rpop  lpop

blpop  brpop

当前数据库中没有元素,打开 Redis 客户端手动输入一段 list 类型的数据后,得到返回值

llen

set

sadd  smembers

sismembers

scard

spop

sinter  sinterstore

zset

zadd  zrange

zcard

zrem

zscore

zrank

 

hash

hset  hget

hexists

hdel

hkeys  hvals

hmget  hmset

相关文章:

  • 实现Azure Data Factory安全地请求企业内部API返回数据
  • 鸿蒙开发11-ARKUI框架
  • Cypress EZ-USB CX3 适配输出imx586相机
  • STC32G12K128单片机GPIO模式SPI操作NorFlash并实现FatFS文件系统
  • 【Flutter DevTools】性能优化的瑞士军刀
  • 基于springboot的个人财务管理系统的设计与实现
  • python元类,很难?
  • springCloud/Alibaba常用中间件全集(上)
  • dotnet core webapi 实现 异常处理中间件
  • P11299 [NOISG 2021 Finals] Fraud 题解
  • 【Android面试八股文】Android系统架构【一】
  • ubuntu下gcc/g++安装及不同版本切换
  • PHP实现简单的爬虫功能
  • 在复杂性的迷宫里寻找路标 —— 读《人月神话》有感
  • 回溯算法(2):全排列问题
  • Serving入门
  • Java 动态代理实现
  • webgl入门实例-向量在图形学中的核心作用
  • 【每日八股】复习计算机网络 Day2:TCP 断开连接时四次挥手及其相关问题
  • [Java实战经验]异常处理最佳实践
  • 观察|美军在菲律宾部署新导弹,试图继续构建“导弹链”
  • 一女子称醉酒后疑似被性侵,长沙警方通报:嫌犯邱某某已被刑拘
  • 非法收受财物2.29亿余元,窦万贵受贿案一审开庭
  • 美国开始从叙利亚撤出数百人,分析人士担忧“伊斯兰国”威胁再起
  • 煤矿疑污水渗漏致数十亩耕地被淹,陕西榆阳区:成立调查组调查
  • 陈少洋出任中国航天科工集团党组副书记、董事、总经理