单机版 JedisUtil({基本操作封装工具类})【二】
<!--集成的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 JedisUtil implements InitializingBean {
private static JedisPool pool = null;
/**
* 默认缓存时间
*/
private static final int DEFAULT_CACHE_SECONDS = 0;// 单位秒 设置成一个钟
private static Logger LOGGER = Logger.getLogger(JedisUtil.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);
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 }
}
单机版 JedisUtil({基本操作封装工具类})【二】的更多相关文章
- 单机版 RedisUtils({基本操作封装工具类})【三】
<!--集成的RedisJAR--> <!--引入jedis需的jar包--> <dependency> <groupId>redis.clients& ...
- 单机版 RedisPoolUtil({基本操作封装工具类})【一】
<!--集成的RedisJAR--> <!--引入jedis需的jar包--> <dependency> <groupId>redis.clients& ...
- 泛型(二)封装工具类CommonUtils-把一个Map转换成指定类型的javabean对象
1.commons-beanutils的使用 commons-beanutils-1.9.3.jar 依赖 commons-logging-1.2.jar 代码1: String className ...
- 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 ...
- 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 ...
随机推荐
- 编辑器模式下如何实例化Prefab
当我们在EditMode下需要用脚本批量添加prefab时,可以用 PrefabUtility.InstantiatePrefab(prefab) as GameObject; 注意:如果用GameO ...
- Netty实战
一.Netty异步和事件驱动1.Java网络编程回顾socket.accept 阻塞socket.setsockopt /非阻塞2.NIO异步非阻塞a).nio 非阻塞的关键时使用选择器(java.n ...
- String、StringBuilder、 StringBuffer 深入分析 源代码解析
java学习有一段时间了.但学习的东西都是框架等东西,java基础知识有点遗忘.所以重温一下java基础知识.写写文章里面有错的希望大家指正共同进步~~ 一.String 大家常常会说使用" ...
- 数据预处理及sklearn方法实现
1.标准化(中心化) 在许多机器学习执行前,需要对数据集进行标准化处理.因为很对算法假设数据的特征服从标准正态分布.所以如果不对数据标准化,那么算法的效果会很差. 例如,在学习算法的目标函数,都假设数 ...
- android菜鸟学习笔记23----ContentProvider(三)利用内置ContentProvider监听短信及查看联系人
要使用一个ContentProvider,必须要知道的是它所能匹配的Uri及其数据存储的表的结构. 首先想办法找到访问短信及联系人数据的ContentProvider能接受的Uri: 到github上 ...
- emmet缩写格式
2016年5月30日 10:10 标准网页<!DOCTYPE html> <html lang="zh-CN"> <head> <meta ...
- Computer Vision: Algorithms and ApplicationsのImage processing
实在是太喜欢Richard Szeliski的这本书了.每一章节(after chapter3)都详述了该研究方向比較新的成果.还有很多很多的reference,假设你感兴趣.全然能够看那些參考论文 ...
- Windows下重置MySQL密码(最开始是因为Access denied for user 'root'@'localhost'这个原因,无法登陆 'root'@'localhost')
本人使用的MySQL5.5,其他版本未测试过. 方法一: 更改密码: mysql -u root -p Enter password:*** mysql>use mysql; 选择数据库 Dat ...
- CentOS 6.5 下安装配置GO 1.2.1
步骤1:保持联网状态,命令 # wget http://go.googlecode.com/files/go1.2.linux-amd64.tar.gz 这里下载的是64位,wget这里默认下载到当前 ...
- 让你快速上手Runtime(转)
前言 本篇主要介绍Runtime在开发中的一些使用场景,顺便讲解了下MJExtension的底层实现.如果喜欢我的文章,可以关注我微博:袁峥Seemygo,也可以来小码哥,了解下我们的iOS培训课程. ...