redis工具类

news/2024/7/24 11:30:07 标签: 数据库, java

方式一、

import redis.clients.jedis.*;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
* <p>Description:redis</p>
*
* @Author: Austin
**/
public class JedisUtil implements Serializable {

//Redis服务器IP
private static String addr;

//Redis的端口号
private static int port;

//访问密码
private static String auth;

//可用连接实例的最大数目,默认值为8;
//如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
private static int maxActive;

//控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8。
private static int maxIdle;

//等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException;
private static int maxWait;

private static int timeOut;

//在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
private static boolean testOnBorrow;

public static Jedis jedis;//非切片额客户端连接

public static JedisPool jedisPool;//非切片连接池

public static ShardedJedis shardedJedis;//切片额客户端连接

public static ShardedJedisPool shardedJedisPool;//切片连接池

/**
* 初始化片池
**/
private static void initialPool() {
// 池基本配置
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(maxActive);
config.setMaxIdle(maxIdle);
config.setMaxWaitMillis(maxWait);
config.setTestOnBorrow(testOnBorrow);
jedisPool = new JedisPool(config, addr, port);
}

/**
* 初始化切片池
**/
private static void initialShardedPool() {
// 池基本配置
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(maxActive);
config.setMaxIdle(maxIdle);
config.setMaxWaitMillis(maxWait);
config.setTestOnBorrow(testOnBorrow);
// slave链接
List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>();
shards.add(new JedisShardInfo(addr, port, auth));

// 构造池
shardedJedisPool = new ShardedJedisPool(config, shards);
}

public static void afterPropertiesSet() throws Exception {
// TODO Auto-generated method stub
initialPool();
initialShardedPool();
try {
shardedJedis = shardedJedisPool.getResource();
} catch (Exception e) {
System.out.println("连接shardedJedisPool失败!");
}
try {
jedis = jedisPool.getResource();
} catch (Exception e) {
System.out.println("连接jedisPool失败!");
}
}

public void setAddr(String addr) {
this.addr = addr;
}

public String getAddr() {
return addr;
}

 

public int getPort() {
return port;
}

public void setPort(int port) {
JedisUtil.port = port;
}

public String getAuth() {
return auth;
}

public void setAuth(String auth) {
JedisUtil.auth = auth;
}

public int getMaxActive() {
return maxActive;
}

public void setMaxActive(int maxActive) {
JedisUtil.maxActive = maxActive;
}

public int getMaxIdle() {
return maxIdle;
}

public void setMaxIdle(int maxIdle) {
JedisUtil.maxIdle = maxIdle;
}

public int getMaxWait() {
return maxWait;
}

public void setMaxWait(int maxWait) {
JedisUtil.maxWait = maxWait;
}

public int getTimeOut() {
return timeOut;
}

public void setTimeOut(int timeOut) {
JedisUtil.timeOut = timeOut;
}

public boolean isTestOnBorrow() {
return testOnBorrow;
}

public void setTestOnBorrow(boolean testOnBorrow) {
JedisUtil.testOnBorrow = testOnBorrow;
}
}

方式二、

import redis.clients.jedis.*;

import java.io.Serializable;

/**
* <p>Description:</p>
*
* @Author: Austin
**/
public class RedisUtil implements Serializable {
//Redis服务器IP
private static String addr;

//Redis的端口号
private static int port;

//访问密码
private static String auth;

//可用连接实例的最大数目,默认值为8;
//如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
private static int maxActive;

//控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8。
private static int maxIdle;

//等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException;
private static int maxWait;

private static int timeOut;

//在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
private static boolean testOnBorrow;

public static Jedis jedis;//非切片额客户端连接

public static JedisPool jedisPool;//非切片连接池

public static ShardedJedis shardedJedis;//切片额客户端连接

public static ShardedJedisPool shardedJedisPool;//切片连接池

/**
* 初始化Redis连接池
*/
static {
try {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(maxActive);
config.setMaxIdle(maxIdle);
config.setMaxWaitMillis(maxWait);
config.setTestOnBorrow(testOnBorrow);
jedisPool = new JedisPool(config, addr, port, timeOut, auth);
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* 获取Jedis实例
* @return
*/
public synchronized static Jedis getJedis() {
try {
if (jedisPool != null) {
Jedis resource = jedisPool.getResource();
return resource;
} else {
return null;
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
}

/**
* 释放jedis资源
* @param jedis
*/
public static void returnResource(final Jedis jedis) {
if (jedis != null) {
jedisPool.returnResource(jedis);
}
}


public void setAddr(String addr) {
this.addr = addr;
}

public String getAddr() {
return addr;
}

 

public int getPort() {
return port;
}

public void setPort(int port) {
this.port = port;
}

public String getAuth() {
return auth;
}

public void setAuth(String auth) {
this.auth = auth;
}

public int getMaxActive() {
return maxActive;
}

public void setMaxActive(int maxActive) {
this.maxActive = maxActive;
}

public int getMaxIdle() {
return maxIdle;
}

public void setMaxIdle(int maxIdle) {
this.maxIdle = maxIdle;
}

public int getMaxWait() {
return maxWait;
}

public void setMaxWait(int maxWait) {
this.maxWait = maxWait;
}

public int getTimeOut() {
return timeOut;
}

public void setTimeOut(int timeOut) {
this.timeOut = timeOut;
}

public boolean isTestOnBorrow() {
return testOnBorrow;
}

public void setTestOnBorrow(boolean testOnBorrow) {
this.testOnBorrow = testOnBorrow;
}
}


http://www.niftyadmin.cn/n/991331.html

相关文章

2012,十大热门云职业

4.云工程师&#xff08;Cloud engineer&#xff09; 工作描述&#xff1a;计划和进行技术任务的执行和维护内部企业共享的虚拟化基础架构。 资格&#xff1a;计算机科学学士学位&#xff0c;5年以上高度虚拟化的共享基础设施实施经验。 特殊要求&#xff1a;相关虚拟化认证资格…

PDO 绑定IN()语句的Array变量

前言 自己琢磨着写了一个小框架使使。写完了之后&#xff0c;开始写 demo 的时候遇到了 PDO 绑定 IN 语句的问题。 问题 原本想要在 prepare 语句中写一个变量&#xff0c;再 bindParam 这个变量&#xff0c;当然这个变量的值是一个数组&#xff0c;PDO 的扩展类会自动处理的。…

jdbc连接mysql时区不准确_jdbc连接mysql数据库时间类型有问题

正在做一个毕业设计&#xff0c;用的是Mysql数据库&#xff0c;现在里面有个字段的类型是timestamp。如&#xff1a;CREATETABLEtb_affiche(idint(4)NOTNULLauto_increment,namevarchar(50)defaultNULL,conten...正在做一个毕业设计&#xff0c;用的是Mysql数据库&#xff0c;现…

用DataTables实现服务器端分页

推荐下&#xff0c;H-ui.admin 模版里面使用了DataTables&#xff0c;而且把常用功能都给实现的很完整了&#xff0c;推荐去参考H-ui的模版源码参考&#xff01; 分享几篇有价值的文章&#xff1a; DataTables 的官网&#xff1a;https://datatables.net Bootstrap插件DataTabl…

makefile(02)_变量

4.变量与赋值 4.1.变量 Makefile中支持程序设计语言中变量的概率&#xff0c;但没有变量类型&#xff0c;只代表文本数据&#xff1b;变量命名规则&#xff1a;变量可以包含字符、数字、下划线&#xff0c;单不能包含”:”&#xff0c;”#”, “”&#xff0c;” ”&#xff0c…

毕业论文写作概要

一、毕业论文开题报告范文及注意事项 开题报告的内容大致如下&#xff1a;课题名称、承担单位、课题负责人、起止年限、报名提纲。报名提纲包括&#xff1a;(1)课题的目的、意义、国内外研究概况和有关文献资料的主要观点与结论&#xff1b;   (2)研究对象、研究内容、各项有…

wpf中数据的外衣DataTemplate的应用

在WPF中&#xff0c;通过引入模版将数据和算法的“内容” 与“形式”解隅了&#xff0c;WPF中木板可以分为两大类 ContrlTemplate是算法内容的表现形式&#xff0c;一个控件怎么样去组织他的内部结构才能符合他的逻辑、让用户体验起来更舒服&#xff0c;他可以让程序员在内部逻…

科技和文化的融合,美益添VR亮相风筝嘉年华

风筝嘉年华除了风筝外&#xff0c;这些科技成果展示也不容错过。 4月15日&#xff0c;由建邺区委宣传部和江苏文艺台主办的南京第六届风筝嘉年华在绿博园成功拉开帷幕&#xff0c;和我们印象中的风筝节不同的是&#xff0c;这次不仅仅可以看到“千奇百怪”的风筝争奇斗艳&…