单机版 RedisPoolUtil({基本操作封装工具类})【一】
<!--集成的RedisJAR-->
<!--引入jedis需的jar包-->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
<!--Spring整合jedis的依赖-->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.7.1.RELEASE</version>
</dependency>
package com.dsj.gdbd.utils.jedis; import com.dsj.gdbd.utils.serialize.SerializingUtil;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.InitializingBean;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig; import javax.annotation.PostConstruct;
import java.util.HashSet;
import java.util.Map;
import java.util.Set; public class RedisPoolUtil implements InitializingBean {
private static JedisPool pool = null;
/**
* 默认缓存时间
*/
private static final int DEFAULT_CACHE_SECONDS = 0;// 单位秒 设置成一个钟
private static Logger LOGGER = Logger.getLogger(RedisPoolUtil.class); public static JedisPool getPool() {
return pool;
} @PostConstruct
public void init() { if (pool == null) {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(10000);
config.setMaxIdle(1000);
config.setMaxWaitMillis(1000 * 10); //在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
config.setTestOnBorrow(true);
//new JedisPool(config, ADDR, PORT, TIMEOUT, AUTH);
//pool = new JedisPool(config, "47.94.15.160", 6379, 10000, "Fanthful@123");
pool = new JedisPool(config, "192.168.31.206", 6379, 10000);
}
} public synchronized static Jedis getResource() {
if (pool == null) {
pool = getPool();
}
return pool.getResource();
}
public static void closeRedis(Jedis redis) {
if (redis != null) {
redis.close();
}
}
public static void set(String key, String value) {
Jedis redis = getResource();
try {
redis.set(key, value);
} finally {
closeRedis(redis);
}
} public static void set(Object key, Object value) {
Jedis redis = getResource();
try {
redis.set(SerializingUtil.serialize(key), SerializingUtil.serialize(value));
} finally {
closeRedis(redis);
}
}
public static String get(String key) {
Jedis redis = getResource();
try {
return redis.get(key);
} finally {
closeRedis(redis);
}
} /**
* 根据缓存键获取Redis缓存中的值.<br/>
*
* @param key 键.<br/>
* @return Object .<br/>
* @throws Exception
*/
public static Object get(Object key) {
Jedis jedis = null;
try {
jedis = getResource();
byte[] obj = jedis.get(SerializingUtil.serialize(key));
return obj == null ? null : SerializingUtil.deserialize(obj);
} catch (Exception e) {
LOGGER.error("Cache获取失败:" + e);
return null;
} finally {
closeRedis(jedis);
}
}
/**
* 根据缓存键获取Redis缓存中的值.<br/>
*
* @param key 键.<br/>
* @return Object .<br/>
* @throws Exception
*/
public static Object getObj(String key) {
Jedis jedis = null;
try {
jedis = getResource();
byte[] obj = jedis.get(SerializingUtil.serialize(key));
return obj == null ? null : SerializingUtil.deserialize(obj);
} catch (Exception e) {
LOGGER.error("Cache获取失败:" + e);
return null;
} finally {
closeRedis(jedis);
}
}
/**
* 根据缓存键获取Redis缓存中的值.<br/>
*
* @param key 键.<br/>
* @return Object .<br/>
* @throws Exception
*/
public static String getStr(String key) {
Jedis jedis = null;
try {
jedis = getResource();
return jedis.get(key); } catch (Exception e) {
LOGGER.error("Cache获取失败:" + e);
return null;
} finally {
closeRedis(jedis);
}
} /**
* 根据缓存键获取Redis缓存中的值.<br/>
*
* @param key 键.<br/>
* @return Object .<br/>
* @throws Exception
*/
public static byte[] get(byte[] obj) {
Jedis jedis = null;
try {
jedis = getResource();
return jedis.get(obj);
} catch (Exception e) {
LOGGER.error("Cache获取失败:" + e);
return null;
} finally {
closeRedis(jedis);
}
} /**
* 判断一个key是否存在
*
* @param key
* @return
*/
public static Boolean exists(Object key) {
Jedis jedis = null;
Boolean result = false;
try {
jedis = getResource();
return jedis.exists(SerializingUtil.serialize(key));
} catch (Exception e) {
LOGGER.error("Cache获取失败:" + e);
return false;
} finally {
closeRedis(jedis);
}
} public static Boolean existsKey(String key) {
Jedis jedis = null;
Boolean result = false;
try {
jedis = getResource();
return jedis.exists(key);
} catch (Exception e) {
LOGGER.error("Cache获取失败:" + e);
return false;
} finally {
closeRedis(jedis);
}
} /**
* 根据缓存键清除Redis缓存中的值.<br/>
*
* @param keys
* @return
* @throws Exception
*/
public static Boolean del(Object... keys) {
Jedis jedis = null;
try {
jedis = getResource();
jedis.del(SerializingUtil.serialize(keys));
return true;
} catch (Exception e) {
LOGGER.error("Cache删除失败:" + e);
return false;
} finally {
closeRedis(jedis);
}
} /**
* 根据缓存键清除Redis缓存中的值.<br/>
*
* @param keys
* @return
* @throws Exception
*/
public static Long del(String... keys) {
Jedis jedis = null;
try {
jedis = getResource();
jedis.del(keys);
return jedis.del(keys);
} catch (Exception e) {
LOGGER.error("Cache删除失败:" + e);
return 0l;
} finally {
closeRedis(jedis);
}
} /**
* 保存一个对象到Redis中(缓存过期时间:使用此工具类中的默认时间) . <br/>
*
* @param key 键 . <br/>
* @param object 缓存对象 . <br/>
* @return true or false . <br/>
* @throws Exception
*/
public static Boolean save(Object key, Object object) {
return save(key, object, DEFAULT_CACHE_SECONDS);
} /**
* 保存一个对象到redis中并指定过期时间
*
* @param key 键 . <br/>
* @param object 缓存对象 . <br/>
* @param seconds 过期时间(单位为秒).<br/>
* @return true or false .
*/
public static Boolean save(Object key, Object object, int seconds) {
Jedis jedis = null;
try {
jedis = getResource();
jedis.set(SerializingUtil.serialize(key), SerializingUtil.serialize(object));
jedis.expire(SerializingUtil.serialize(key), seconds);
return true;
} catch (Exception e) {
e.printStackTrace();
LOGGER.error("Cache保存失败:" + e);
return false;
} finally {
closeRedis(jedis);
}
}
/**
* 删除Redis中的所有key
*
* @throws Exception
*/
public static void flushAll() {
Jedis jedis = null;
try {
jedis = pool.getResource();
jedis.flushAll();
} catch (Exception e) {
LOGGER.error("Cache清空失败:" + e);
} finally {
closeRedis(jedis);
}
}
/**
* 获取list
*
* @param <T>
* @param key
* @return list
*/
public static <T> Map<String, T> getMap(String key) throws Exception {
if (getResource() == null || !getResource().exists(key.getBytes())) {
return null;
}
byte[] in = getResource().get(key.getBytes());
return (Map<String, T>) SerializingUtil.deserialize(in);
}
/**
* 设置 map
*
* @param <T>
* @param key
*/
public static <T> void setMap(String key, Map<String, T> map) {
try {
getResource().set(key.getBytes(), SerializingUtil.serialize(map));
} catch (Exception e) {
LOGGER.warn("Set key error : " + e);
}
}
public static Long dbSize() {
Jedis jedis = null;
Long size = 0l;
try {
jedis = pool.getResource();
size = jedis.dbSize();
} catch (Exception e) {
LOGGER.error("查询库异常:" + e);
} finally {
closeRedis(jedis);
}
return size;
} public static Set<String> keys(String pattern) {
Jedis jedis = null;
try {
jedis = pool.getResource();
Set<String> allKey = jedis.keys("*" + pattern + "*");
return allKey;
} catch (Exception e) {
LOGGER.error("Cache获取失败:" + e);
return new HashSet<String>();
} finally {
closeRedis(jedis);
}
} public static void flushDB() {
Jedis jedis = null;
try {
jedis = pool.getResource();
jedis.flushDB();
} catch (Exception e) {
LOGGER.error("Cache清空失败:" + e);
} finally {
closeRedis(jedis);
}
} public static boolean setex(byte[] key, byte[] value, int expire) {
Jedis redis = getResource();
try {
redis.setex(key, expire, value);
return true;
} catch (Exception e) {
LOGGER.error("保存redis:" + e);
return false;
} finally {
closeRedis(redis);
}
} public static boolean setex(String key, String value, int expire) {
Jedis redis = getResource();
try {
redis.setex(key, expire, value);
return true;
} catch (Exception e) {
LOGGER.error("保存redis:" + e);
return false;
} finally {
closeRedis(redis);
}
}
public static boolean setByte(byte[] key, byte[] value) {
Jedis redis = getResource();
try {
redis.set(key, value);
return true;
} catch (Exception e) {
LOGGER.error("保存redis:" + e);
return false;
} finally {
closeRedis(redis);
}
}
public void afterPropertiesSet() throws Exception {
// TODO Auto-generated method stub
}
}
单机版 RedisPoolUtil({基本操作封装工具类})【一】的更多相关文章
- 单机版 RedisUtils({基本操作封装工具类})【三】
<!--集成的RedisJAR--> <!--引入jedis需的jar包--> <dependency> <groupId>redis.clients& ...
- 单机版 JedisUtil({基本操作封装工具类})【二】
<!--集成的RedisJAR--> <!--引入jedis需的jar包--> <dependency> <groupId>redis.clients& ...
- JAVA之旅(五)——this,static,关键字,main函数,封装工具类,生成javadoc说明书,静态代码块
JAVA之旅(五)--this,static,关键字,main函数,封装工具类,生成javadoc说明书,静态代码块 周末收获颇多,继续学习 一.this关键字 用于区分局部变量和成员变量同名的情况 ...
- Android OkHttp网络连接封装工具类
package com.lidong.demo.utils; import android.os.Handler; import android.os.Looper; import com.googl ...
- 泛型(二)封装工具类CommonUtils-把一个Map转换成指定类型的javabean对象
1.commons-beanutils的使用 commons-beanutils-1.9.3.jar 依赖 commons-logging-1.2.jar 代码1: String className ...
- MySQL JDBC常用知识,封装工具类,时区问题配置,SQL注入问题
JDBC JDBC介绍 Sun公司为了简化开发人员的(对数据库的统一)操作,提供了(Java操作数据库的)规范,俗称JDBC,这些规范的由具体由具体的厂商去做 对于开发人员来说,我们只需要掌握JDBC ...
- 超简单的okhttp封装工具类(上)
版权声明:转载请注明出处:http://blog.csdn.net/piaomiao8179 https://blog.csdn.net/piaomiao8179/article/details/ ...
- ViewPager封装工具类: 轻松实现APP导航或APP中的广告栏
相信做app应用开发的,绝对都接触过ViewPager,毕竟ViewPager的应用可以说无处不在:APP第一次启动时的新手导航页,APP中结合Fragment实现页面滑动,APP中常见的广告栏的自动 ...
- FTP上传-封装工具类
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import ja ...
随机推荐
- (2) yum源配置-163
1.获取yum源文件 登录http://mirrors.163.com/.help/centos.html,查看CentOS6的链接地址(右键点击“CentOS6”,选择复制链接地址),链接地址为:h ...
- ELK之jason配置nginx文件等多个配置文件
[root@web02 ~]# cat /etc/logstash/conf.d/nginx.conf input { file { path => "/var/log/nginx/a ...
- 嵌入式开发之davinci--- 8148/8168/8127 中的大屏分布式拼接显示系统
其实在接触从12年接触8127系列ipnc 时看到200w和500w的高清像素,我就萌生了视频拼接的兴趣,没想到今年的安博会就有公司推出产品了,它就是上海的环视科技,从他的主页可以看到,明显的有个只能 ...
- 多媒体开发之--- h264 图像、帧、片、NALU
图像.帧.片.NALU 是学习 H.264的人常常感到困惑的一些概念,我在这里对自己的理解做一些阐述,欢迎大家讨论: H.264 是一次概念的革新,它打破常规,完全没有 I 帧.P帧.B 帧的概念,也 ...
- ASP.NET动态网站制作(18)-- jq作业讲解及知识补充
前言:这节课主要讲解js及jq作业,并在作业讲解完后补充关于jQuery的一些知识点. 内容: 1.作业讲解:计算器那一块考虑的各种情况还不算完善,只实现了基本的功能,还需多多练习使用jQuery. ...
- Java常用代码工具类相关
1.HttpServletRequest转换成Map public static Map<String,String> parseXML(HttpServletRequest reques ...
- 在Linux中显示日历(cal)
cal 2013 显示2013年整年日历 cal 7 2013 显示2013年 7 月 日历
- 让WebRTC支持H264编解码
近期实验了下怎样让WebRTC支持H264编码.记录下,供有须要的人參考. 说明一下,我是在 Ubuntu Server 14.04 下编译的 WebRTC ,使用 native(C++) api 开 ...
- 自定义TextView带有各类.ttf字体的TextView
最近项目遇到了将普通文字转化为带有字体样式的文字,这里就涉及到了.ttf文件,我上网百度了不少资料最终终于实现了,现在想想其实并不复杂 1,你需要下载一种.ttf字体文件,你可以从网上找到一种字体的. ...
- 经典的css reset代码 (reset.css)
<style> html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, ...