package com.c3po.utils;
import java.util.List;
import java.util.Map;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
/**
* redis cache 工具类
*
*/
public class RedisUtil {
public final static String VIRTUAL_COURSE_PREX = "_lc_vc_";
/**
* 非切片链接池
*/
private JedisPool jedisPool;
private String ip="127.0.0.1";
/**
* 初始化Redis连接池
*/
/* static {
try {
// 加载redis配置文件
ResourceBundle bundle = ResourceBundle.getBundle("redis");
if (bundle == null) {
throw new IllegalArgumentException(
"[redis.properties] is not found!");
}
int maxActivity = Integer.valueOf(bundle
.getString("redis.pool.maxActive"));
int maxIdle = Integer.valueOf(bundle
.getString("redis.pool.maxIdle"));
long maxWait = Long.valueOf(bundle.getString("redis.pool.maxWait"));
boolean testOnBorrow = Boolean.valueOf(bundle
.getString("redis.pool.testOnBorrow"));
// boolean onreturn = Boolean.valueOf(bundle
// .getString("redis.pool.testOnReturn"));
// ip = bundle.getString("redis.ip");
// port = bundle.getString("redis.port");
} catch (Exception e) {
e.printStackTrace();
}
}
*/
/**
* 构造函数
*/
public RedisUtil() {
}
/**
* 非切片连接池初始化
*/
private void initialPool() {
// 池基本配置
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(100);
config.setMaxIdle(5);
config.setMaxWaitMillis(1000);
config.setTestOnBorrow(true);
jedisPool = new JedisPool(config, ip, 6379);
}
/**
* 在多线程环境同步初始化
*/
private synchronized void poolInit() {
if (jedisPool == null) {
initialPool();
}
}
/**
* 非切片客户端链接 同步获取非切片Jedis实例
*
* @return Jedis
*/
public synchronized Jedis getJedis() {
if (jedisPool == null) {
poolInit();
}
Jedis jedis = null;
try {
if (jedisPool != null) {
jedis = jedisPool.getResource();
// jedis.auth(redisCacheConfig.getAuth());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
returnResource(jedis);
}
return jedis;
}
/**
* 释放jedis资源
*
* @param jedis
*/
@SuppressWarnings("deprecation")
public void returnResource(final Jedis jedis) {
if (jedis != null && jedisPool != null) {
jedisPool.returnResource(jedis);
}
}
/**
* 得到Key
*
* @param key
* @return
*/
public String buildKey(String key) {
return VIRTUAL_COURSE_PREX + key;
}
/**
* 设置 String
*
* @param key
* @param value
*/
// public void setString(String key ,String value){
// try {
// value = StringUtil.isNullOrEmpty(value) ? "" : value;
// getJedis().set(buildKey(key),value);
// } catch (Exception e) {
//
// }
// }
/**
* 设置 过期时间
*
* @param key
* @param seconds
* 以秒为单位
* @param value
*/
// public void setString(String key ,int seconds,String value){
// try {
// value = StringUtil.isNullOrEmpty(value) ? "" : value;
// getJedis().setex(buildKey(key), seconds, value);
// } catch (Exception e) {
//
// }
// }
public boolean exist(String key) {
String bKey = buildKey(key);
if (getJedis() == null || !getJedis().exists(bKey)) {
return false;
}
return true;
}
/**
* 向缓存中设置对象
*
* @param key
* @param bean
*/
public void setString(String key, String param) {
String bKey = buildKey(key);
try {
getJedis().set(bKey.getBytes(), SerializeUtil.serialize(param));
} catch (Exception e) {
}
}
/**
* 获取String值
*
* @param key
* @return value
*/
public String getString(String key) {
String bKey = buildKey(key);
if (getJedis() == null || !getJedis().exists(bKey)) {
return null;
}
byte[] in = getJedis().get(bKey.getBytes());
String str = (String)SerializeUtil.unserialize(in);
return str;
}
/**
* 向缓存中设置对象
*
* @param key
* @param bean
*/
public <T> void setBean(String key, Object bean) {
String bKey = buildKey(key);
try {
System.out.println(bean);
getJedis().set(bKey.getBytes(), SerializeUtil.serialize(bean));
} catch (Exception e) {
System.out.println(e);
}
}
/**
* 根据key 获取对象
*
* @param key
* @return
*/
@SuppressWarnings("unchecked")
public <T> T getBean(String key) {
String bKey = buildKey(key);
if (getJedis() == null || !getJedis().exists(bKey.getBytes())) {
return null;
}
byte[] in = getJedis().get(bKey.getBytes());
T bean = (T) SerializeUtil.unserialize(in);
return bean;
}
/**
* 设置 list
*
* @param <T>
* @param key
* @param value
*/
public <T> void setList(String key, List<T> list) {
String bKey = buildKey(key);
try {
getJedis().set(bKey.getBytes(), SerializeUtil.serialize(list));
} catch (Exception e) {
System.out.println(e);
}
}
/**
* 获取list
*
* @param <T>
* @param key
* @return list
*/
@SuppressWarnings("unchecked")
public <T> List<T> getList(String key) {
String bKey = buildKey(key);
if (getJedis() == null || !getJedis().exists(bKey.getBytes())) {
return null;
}
byte[] in = getJedis().get(bKey.getBytes());
List<T> list = (List<T>) SerializeUtil.unserialize(in);
return list;
}
/**
* 设置 map
*
* @param <T>
* @param key
* @param value
*/
public <T> void setMap(String key, Map<String, T> map) {
String bKey = buildKey(key);
try {
getJedis().set(bKey.getBytes(), SerializeUtil.serialize(map));
} catch (Exception e) {
System.out.println(e);
}
}
/**
* 获取list
*
* @param <T>
* @param key
* @return list
*/
@SuppressWarnings("unchecked")
public <T> Map<String, T> getMap(String key) {
String bKey = buildKey(key);
if (getJedis() == null || !getJedis().exists(bKey.getBytes())) {
return null;
}
byte[] in = getJedis().get(bKey.getBytes());
Map<String, T> map = (Map<String, T>) SerializeUtil.unserialize(in);
return map;
}
}
wang_shuyu
- 粉丝: 191
- 资源: 86
最新资源
- 基于redis全站抓取资料齐全+文档+源码.zip
- 基于pybullet和stable baseline3 的法奥机械臂的强化学习抓取训练代码资料齐全+文档+源码.zip
- 基于Redis实现的一套分布式定向抓取工程。资料齐全+文档+源码.zip
- 基于RSS订阅自动抓取文章生成站点,这是个实验性功能。资料齐全+文档+源码.zip
- 基于scrapy+selenium+phantomjs的爬虫程序,用于抓取多个学校的学术报告信息资料齐全+文档+源码.zip
- 基于scrapy的danbooru图片抓取工具资料齐全+文档+源码.zip
- 基于scrapy的上市公司信息抓取工具资料齐全+文档+源码.zip
- 基于Scrapy框架,用于抓取新浪微博数据,主要包括微博内容,评论以及用户信息资料齐全+文档+源码.zip
- 基于scrapy的时尚网站商品数据抓取资料齐全+文档+源码.zip
- 基于scrapy框架使用redis实现对shopee商城的增量抓取资料齐全+文档+源码.zip
- 基于Scrapy爬虫对某守望先锋网站数据的动态抓取资料齐全+文档+源码.zip
- 基于scrapy实现几大主流司法拍卖网站抓取资料齐全+文档+源码.zip
- 基于Selelium图片抓取资料齐全+文档+源码.zip
- 基于swoole扩展的爬虫,php多进程多线程抓取资料齐全+文档+源码.zip
- 基于Thinkphp5实现数据信息抓取、基于整理的API接口 + 招聘信息抓取(前程无忧智联招聘boss直聘拉勾网)数据接口 + 新闻分类(头条军事娱乐体
- FSCapture Ver. 8.9:屏幕截图与录制工具,图像编辑与快捷键支持,支持全屏、窗口、区域截图,滚动截图与视频录制,自动上传与FTP上传,适用于教学、设计、技术支持与文档制作
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
- 3
前往页