jedis 工具类制作 | 学习笔记

本文涉及的产品
云数据库 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();
}

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2天前
|
JSON NoSQL Java
Redis入门到通关之Java客户端SpringDataRedis(RedisTemplate)
Redis入门到通关之Java客户端SpringDataRedis(RedisTemplate)
|
8天前
|
JSON 网络协议 C#
C# 工具类
C# 工具类
19 1
|
9天前
|
Java
JavaMap工具类(MapUtils)
JavaMap工具类(MapUtils)
|
2月前
JsonUtil工具类
JsonUtil工具类
10 0
|
4月前
工具类-HttpClientUtil
工具类-HttpClientUtil
24 0
|
8月前
|
Java
数字处理工具类
数字处理工具类
45 0
|
10月前
SharePreference工具类
SharePreference工具类
|
11月前
|
NoSQL Java Redis
【案例实战】SpringBoot整合Redis连接池生成图形验证码
【案例实战】SpringBoot整合Redis连接池生成图形验证码
【案例实战】SpringBoot整合Redis连接池生成图形验证码
|
搜索推荐 安全 小程序
6个十分好用的工具类网站
6个十分好用的工具类网站
149 0
6个十分好用的工具类网站
|
NoSQL Java Redis
jedis-jedis 常规操作演示 | 学习笔记
快速学习jedis-jedis 常规操作演示
75 0