jedis 工具类制作 | 学习笔记

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 快速学习 jedis 工具类制作

开发者学堂课程【Redis 入门到精通(基础篇)jedis 工具类制作】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/764/detail/13409


jedis 工具类制作

 

内容介绍

一、代码

二、Jedis 简易工具类开发

三、封装连接参数

 

一、代码

package com.itheima.util;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

public class JedisUtils {

Private static JedisPool jp = null;

private static String host = null;

private static int port;
private static int maxTotal;
private static int maxIdle;

static{

ResourceBundle rb = ResourceBundle.getBundle("redis");
host = rb.getString(key:"redis.host");
port = Integer.parseInt(rb.getString(key:"redis.port"));
maxTotal = Integer.parseInt(rb.getString(key:"redis.maxTotal"));

maxIdle = Integer.parseInt(rb.getString(key:"redis,maxIdle"));

JedisPoolConfig jpc = new JedisPoolConfig();

jpc.setMaxTotal(maxTotal);
jpc.setMaxIdle(maxIdle);
String host = "127.0.0.1";
int port = 6379;
jp = new JedisPool(jpc,host,port);

}

public static Jedis getJedis(){

return jp.getResource();
}
public static void main(String[],args){
Jedisutils.getJedis();
}

}

程序已经完成了,有一个小问题,jedis对象是手动管理的,企业中不会这样做,都是连接池提供连接,现在做一个jedis连接处的获取工具类,创建一个util.jedisUtils,提供一个方法,能够返回jedis对象,这个对象怎么得呢,

通过连接池获取,那么我们把连接池造出来就好了,不需要我们自己去做一个连接池,jedis 已经提供了连接池技术。


二、Jedis简易工具类开发

基于连接池获取连接
JedjsPool:Jedis提供的连接池技术
poolConfig:连接池配置对象

Host:redis服务地址

Port:redis服务端口号
public JedisPool(GenericobjectPoolConfig poolconfig,String host, int port){

this(poolConfig,host,port,2000,(String)null, 0, (string)null);

Jedis中有一个叫jedispool的对象,这就是一个连接池对象,拿到这个对象之后,就可以得连接了,方法比较简单,jedispool的配置的构造方法是(GenericobjectPoolConfig poolconfig,String host, int port),先写一个jedis对象,然后写一个null,返回值就是jedis,最后加一个return,

接下来把null的问题解决掉就OK了,只需要new一个jedispool对象即可,然后告诉他刚刚我们说的那些参数,就是jedis的核心配置,有了核心配置就可以了,告诉一个最大连接数,活动连接数,然后加上端口号,最后把三个参数告诉他就可以创建了。

我们试运行一下,然后获取jedisUtils.getjedis(),能获取出来就OK,现在没有报错,已经连上了连接池,如果要真正测试,可以在其他的代码进行测试。

把我们上一节程序的jedis去掉,然后jedis拿法换一下,第18行:Jedis jedis = JedisUtils.getJedis();

这个拿出来,可以正常运行,这个时候jedis的工具类就做成了一个基础版,然后我们思考一下,每次连接都创建一个连接池,这不仅没有提高效率,反而降低了效率,所以我们要把这个抽出来,只加载一次就可以了,静态代码块,在这里做一个初始化,把这一块搬走,调用jp是不行的,在外面定义一下JedisPool,这样就可以了,这样就从外部初始化了。

然后为了避免后续修改程序,把30,10提出了写一个配置文件,new一个file,redis.properties,然后写配置文件的代码,在代码里面加上配置文件,拿到配置文件后,一个一个取值,首先取出host,依次port,maxTotal,maxIdle,接下来就都做完了,下面的地址端口可以删掉了,把两个输字改一下,然后运行一下,没有报错,到上一节的程序运行也没有问题,怎样证明是使用的这个,那么我们就修改一下配置文件就可以了,再次运行报错,无法连接,我们的工具类就做好了。

搬运代码:

JedisPoolConfig jpc = new JedisPoolConfig();

jpc.setMaxTotal(30);
jpc.setMaxIdle(10);
String host = "127.0.0.1";
int port = 6379;
JedisPool jp = new JedisPool(jpc,host,port);

配置文件file代码:

redis.host=127.0.0.1

redis.port=6379
redis.maxTotal=30

redis.maxIdle=10

 

三、封装连接参数

Jedis.properties

redis.host=127.0.0.1

redis.port=6379
redis.maxTotal=30

redis.maxIdle=10

加载配置信息

静态代码初始化资源

static{

ResourceBundle rb = ResourceBundle.getBundle("redis");
host = rb.getString(key:"redis.host");
port = Integer.parseInt(rb.getString(key:"redis.port"));
maxTotal = Integer.parseInt(rb.getString(key:"redis.maxTotal"));

maxIdle = Integer.parseInt(rb.getString(key:"redis,maxIdle"));

PoolConfig jpc = new JedisPoolConfig();

PoolConfig.setMaxTotal(maxTotal);
PoolConfig.setMaxIdle(maxIdle);
JedisPool  = new JedisPool(jpc,host,port);

获取连接

对外访问接口,提供Jedis连接对象,连接从连接池获取

public static Jedis getJedis(){
Jedis jedis = jedisPool.getResource();

return jp.getResource();
}

相关文章
|
缓存 资源调度
umi 解决找不到antd组件库中组件的路径问题 filePath not found of antd/es/float-button
umi 解决找不到antd组件库中组件的路径问题 filePath not found of antd/es/float-button
511 0
|
运维 Java 程序员
Spring5深入浅出篇:Spring切入点详解
该文档是关于Spring框架中切入点的详细解释。切入点是AOP(面向切面编程)的核心概念,用于定义通知(如日志、事务管理)应该附加到代码的哪些位置。文档主要介绍了切入点表达式的不同类型: 1. 方法切入点表达式:使用`execution()`定义匹配的方法,星号`*`代表任意返回值和方法名,`(..)`表示任意参数。 2. 类切入点:指定特定类以应用额外功能,可以精确到类中的所有方法,或者只包含特定包的类。 3. 包切入点表达式:适用于整个包或包及其子包内的所有类和方法。
|
NoSQL Java Redis
redis集群拓扑结构自动更新:使用Lettuce连接Cluster集群实例时异常处理(一)
redis集群拓扑结构自动更新:使用Lettuce连接Cluster集群实例时异常处理
1597 0
|
8月前
|
XML Java 测试技术
Spring AOP—通知类型 和 切入点表达式 万字详解(通俗易懂)
Spring 第五节 AOP——切入点表达式 万字详解!
390 25
|
JavaScript 前端开发 Java
vue-day01 使用cdn引入使用
文章介绍了Vue.js的基础用法,包括数据绑定、条件渲染、列表渲染、事件处理等。通过示例代码展示了如何使用Mustache语法、v-once指令、v-html指令、v-bind和v-on指令,以及动态参数、修饰符和指令缩写。这些基础知识为初学者提供了Vue.js的使用入门。
vue-day01 使用cdn引入使用
|
SQL 弹性计算 测试技术
实时数仓Hologres TPC-H及点查性能开箱测试
Hologres现在仍然是TPCH-30000榜单的全球第一,领先第二名高达23%,最新发布的2.2版本相比之前的1.x的版本性能大约提升100%。
|
移动开发 监控 物联网
无代码平台也能实现园区物业管理系统 让普通人成为开发者 常见的软件盘点
- **草料二维码**:适用于中小物业,提供设备至访客管理的多种场景,免费但无财务催收功能。 - **优房物业管理系统**:专注物业费收缴,有员工工作台,适合需高效催缴的物业。 - **诺怀云物业**:全场景云系统,适合大型机构如商业资产和医院后勤,提供一体化解决方案。 - **OPark智慧园区**:全面的园区管理平台,强调招商与运营管理,适合预算充足且需定制服务的园区运营者。 - **明源云数智**:侧重招商与渠道管理,自动化任务执行,适合大型园区的财务管理和服务优化。
|
Java Spring 缓存
Spring Bean循环依赖详解
【6月更文挑战第2天】
170 2
|
开发框架 JavaScript 前端开发
微软官方开源免费的Blazor UI组件库 - Fluent UI Blazor
微软官方开源免费的Blazor UI组件库 - Fluent UI Blazor
421 1
|
关系型数据库 MySQL 分布式数据库
PolarDB支持哪些编程语言?
【5月更文挑战第12天】PolarDB支持哪些编程语言?
262 6