<!--集成的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({基本操作封装工具类})【一】的更多相关文章

  1. 单机版 RedisUtils({基本操作封装工具类})【三】

    <!--集成的RedisJAR--> <!--引入jedis需的jar包--> <dependency> <groupId>redis.clients& ...

  2. 单机版 JedisUtil({基本操作封装工具类})【二】

    <!--集成的RedisJAR--> <!--引入jedis需的jar包--> <dependency> <groupId>redis.clients& ...

  3. JAVA之旅(五)——this,static,关键字,main函数,封装工具类,生成javadoc说明书,静态代码块

    JAVA之旅(五)--this,static,关键字,main函数,封装工具类,生成javadoc说明书,静态代码块 周末收获颇多,继续学习 一.this关键字 用于区分局部变量和成员变量同名的情况 ...

  4. Android OkHttp网络连接封装工具类

    package com.lidong.demo.utils; import android.os.Handler; import android.os.Looper; import com.googl ...

  5. 泛型(二)封装工具类CommonUtils-把一个Map转换成指定类型的javabean对象

    1.commons-beanutils的使用 commons-beanutils-1.9.3.jar 依赖 commons-logging-1.2.jar 代码1: String className ...

  6. MySQL JDBC常用知识,封装工具类,时区问题配置,SQL注入问题

    JDBC JDBC介绍 Sun公司为了简化开发人员的(对数据库的统一)操作,提供了(Java操作数据库的)规范,俗称JDBC,这些规范的由具体由具体的厂商去做 对于开发人员来说,我们只需要掌握JDBC ...

  7. 超简单的okhttp封装工具类(上)

      版权声明:转载请注明出处:http://blog.csdn.net/piaomiao8179 https://blog.csdn.net/piaomiao8179/article/details/ ...

  8. ViewPager封装工具类: 轻松实现APP导航或APP中的广告栏

    相信做app应用开发的,绝对都接触过ViewPager,毕竟ViewPager的应用可以说无处不在:APP第一次启动时的新手导航页,APP中结合Fragment实现页面滑动,APP中常见的广告栏的自动 ...

  9. FTP上传-封装工具类

    import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import ja ...

随机推荐

  1. Gmail收不到邮件咋办?

    http://www.ipip.net/ping.php 分别输入 imap.gmail.com pop.gmail.com smtp.gmail.com 选择  国外 , 然后点ping,找到对应的 ...

  2. ubuntu安装中文man手册

    1.安装manpages-zh包 sudo apt-get install manpages-zh 2.修改manpath文件 执行如下命令: vi /etc/manpath.config %s+/u ...

  3. RecyclerView 必知必会(转)

    [腾讯Bugly干货分享]RecyclerView 必知必会 本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com ...

  4. 安装Struts2 类库

    现在,如果一切正常,那么你可以继续设置您的Struts 2框架.以下是简单的步骤,下载并安装在机器上Struts2. 请选择是否要安装Hibernate在Windows或Unix,然后继续进行下一个步 ...

  5. 小技巧:怎样以另外的Windows用户执行SSMS

    可能会碰到这种问题.你须要在一台机器上面使用不同的Windows账户连接到SQL Server做測试.默认情况下,你须要用不同的Windows账户登录然后測试. 实际上不须要每一个windows登陆. ...

  6. saltstack之软件管理

    1.installed安装软件包 例: 安装NFS /srv/salt/pkg/nfs.sls nfs: pkg.installed: - pkgs: - nfs-utils 在命令行执行如下 sal ...

  7. CF:Problem 426B - Sereja and Mirroring 二分或者分治

    这题解法怎么说呢,由于我是把行数逐步除以2暴力得到的答案,所以有点二分的意思,可是昨天琦神说是有点像分治的意思.反正总的来说:就是从大逐步细化找到最优答案. 可是昨晚傻B了.靠! 多写了点东西,然后就 ...

  8. Leetcode - CopyWithRandomList

    Algorithm: Iterate and copy the original list first. For the random pointer, just copy the value fro ...

  9. 基于jquery的bootstrap在线文本编辑器插件Summernote (转)

    Summernote是一个基于jquery的bootstrap超级简单WYSIWYG在线编辑器.Summernote非常的轻量级,大小只有30KB,支持Safari,Chrome,Firefox.Op ...

  10. java操作文件流对象

    所有流对象 InputStream 字节流         FileInputStream 字节流 专门读写非文本文件的         BufferedInputStream 高效流 OutPutS ...