import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import net.sf.json.JSONSerializer;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisShardInfo;
import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPool;
import redis.clients.jedis.exceptions.JedisException;
public class RedisUtil {
private static Log log = LogFactory.getLog(RedisUtil.class);
private Integer maxActive = 500;
private Integer maxIdle = 1000;
private Integer maxWait = 60;
private String address = "127.0.0.1:6379";
private ShardedJedisPool pool;
public void init() {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxActive(maxActive);
config.setMaxIdle(maxIdle);
config.setMaxWait(maxWait);
config.setTestonBorrow(false);
List list = new ArrayList();
String[] addressArr = address.split(",");
for (String str : addressArr) {
list.add(new JedisShardInfo(str.split(":")[0], Integer.parseInt(str
.split(":")[1])));
}
pool = new ShardedJedisPool(config, list);
}
public void destory() {
pool.destroy();
}
public long del(String key) {
ShardedJedis shardedJedis = null;
long ret = 0l;
try {
shardedJedis = pool.getResource();
ret = shardedJedis.del(key);
} catch (Exception e) {
pool.returnBrokenResource(shardedJedis);
shardedJedis = null;
log.error(e);
throw new JedisException(e);
}finally{
if (shardedJedis != null) {
pool.returnResource(shardedJedis);
}
}
return ret;
}
public long hdel(String key,String... fields) {
ShardedJedis shardedJedis = null;
long ret = 0l;
try {
shardedJedis = pool.getResource();
ret = shardedJedis.hdel(key, fields);
} catch (Exception e) {
pool.returnBrokenResource(shardedJedis);
shardedJedis = null;
log.error(e);
throw new JedisException(e);
}finally{
if (shardedJedis != null) {
pool.returnResource(shardedJedis);
}
}
return ret;
}
public void setTSUser(String key, int seconds, TSUser tsUser) {
ShardedJedis shardedJedis = null;
try {
shardedJedis = pool.getResource();
String userString = "";
if(tsUser!=null){
//以下代码防止懒加载或无限循环问题
if(tsUser.getDefaultOrg()!=null){
tsUser.getDefaultOrg().setParentOrg(null);
tsUser.getDefaultOrg().setSubOrgs(null);
}
if(tsUser.getTmEmployee()!=null&&tsUser.getTmEmployee().getTmOrg()!=null){
tsUser.getTmEmployee().getTmOrg().setParentOrg(null);
tsUser.getTmEmployee().getTmOrg().setSubOrgs(null);
tsUser.getTmEmployee().setTmPosition(null);
}
tsUser.setOplistSet(null);
tsUser.setTSDepart(null);
String json = "";//JSONSerializer.toJSON(tsUser).toString();
json= JSONObject.toJSonString(tsUser);
userString = json.toString();
}
shardedJedis.setex(key, seconds, userString);
} catch (Exception e) {
pool.returnBrokenResource(shardedJedis);
shardedJedis = null;
log.error(e);
throw new JedisException(e);
}finally{
if (shardedJedis != null) {
pool.returnResource(shardedJedis);
}
}
}
public TSUser getTSUser(String key) {
ShardedJedis shardedJedis = null;
String value = null;
TSUser tsUser = null;
try {
shardedJedis = pool.getResource();
value = shardedJedis.get(key);
// JSonObject userJson = JSONObject.parseObject(value);
// tsUser = JSON.toJavaObject(userJson,TSUser.class);
tsUser = JSONObject.parseObject(value,TSUser.class);
//刷新token过期时间
expire(key,30*60);
} catch (Exception e) {
pool.returnBrokenResource(shardedJedis);
shardedJedis = null;
log.error(e);
throw new JedisException(e);
}finally{
if (shardedJedis != null) {
pool.returnResource(shardedJedis);
}
}
return tsUser;
}
public long rpush(String key, String string) {
ShardedJedis shardedJedis = null;
long ret = 0l;
try {
shardedJedis = pool.getResource();
ret = shardedJedis.rpush(key, string);
} catch (Exception e) {
pool.returnBrokenResource(shardedJedis);
shardedJedis = null;
log.error(e);
throw new JedisException(e);
}finally{
if (shardedJedis != null) {
pool.returnResource(shardedJedis);
}
}
return ret;
}
public List lrange(String key, long start, long end) {
ShardedJedis shardedJedis = null;
List ret = null;
try {
shardedJedis = pool.getResource();
ret = shardedJedis.lrange(key, start, end);
} catch (Exception e) {
pool.returnBrokenResource(shardedJedis);
shardedJedis = null;
log.error(e);
throw new JedisException(e);
}finally{
if (shardedJedis != null) {
pool.returnResource(shardedJedis);
}
}
return ret;
}
public void hset(String key, String field, String value) {
ShardedJedis shardedJedis = null;
try {
shardedJedis = pool.getResource();
shardedJedis.hset(key, field, value);
} catch (Exception e) {
pool.returnBrokenResource(shardedJedis);
shardedJedis = null;
log.error(e);
throw new JedisException(e);
}finally{
if (shardedJedis != null) {
pool.returnResource(shardedJedis);
}
}
}
public void set(String key, String value) {
ShardedJedis shardedJedis = null;
try {
shardedJedis = pool.getResource();
shardedJedis.set(key, value);
} catch (Exception e) {
pool.returnBrokenResource(shardedJedis);
shardedJedis = null;
log.error(e);
throw new JedisException(e);
}finally{
if (shardedJedis != null) {
pool.returnResource(shardedJedis);
}
}
}
public void set(byte [] key, byte [] value) {
ShardedJedis shardedJedis = null;
try {
shardedJedis = pool.getResource();
shardedJedis.set(key, value);
} catch (Exception e) {
pool.returnBrokenResource(shardedJedis);
shardedJedis = null;
log.error(e);
throw new JedisException(e);
}finally{
if (shardedJedis != null) {
pool.returnResource(shardedJedis);
}
}
}
public byte[] get(byte[] key) {
ShardedJedis shardedJedis = null;
byte[] value = null;
try {
shardedJedis = pool.getResource();
value = shardedJedis.get(key);
} catch (Exception e) {
pool.returnBrokenResource(shardedJedis);
shardedJedis = null;
log.error(e);
throw new JedisException(e);
}finally{
if (shardedJedis != null) {
pool.returnResource(shardedJedis);
}
}
return value;
}
public String get(String key) {
ShardedJedis shardedJedis = null;
String value = null;
try {
shardedJedis = pool.getResource();
value = shardedJedis.get(key);
} catch (Exception e) {
pool.returnBrokenResource(shardedJedis);
shardedJedis = null;
log.error(e);
throw new JedisException(e);
}finally{
if (shardedJedis != null) {
pool.returnResource(shardedJedis);
}
}
return value;
}
public void hmset(String key, Map map) {
ShardedJedis shardedJedis = null;
try {
shardedJedis = pool.getResource();
shardedJedis.hmset(key, map);
} catch (Exception e) {
pool.returnBrokenResource(shardedJedis);
shardedJedis = null;
log.error(e);
throw new JedisException(e);
}finally{
if (shardedJedis != null) {
pool.returnResource(shardedJedis);
}
}
}
public void setex(String key, int seconds, String value) {
ShardedJedis shardedJedis = null;
try {
shardedJedis = pool.getResource();
shardedJedis.setex(key, seconds, value);
} catch (Exception e) {
pool.returnBrokenResource(shardedJedis);
shardedJedis = null;
log.error(e);
throw new JedisException(e);
}finally{
if (shardedJedis != null) {
pool.returnResource(shardedJedis);
}
}
}
public void expire(byte[] key, int seconds) {
ShardedJedis shardedJedis = null;
try {
shardedJedis = pool.getResource();
shardedJedis.expire(key, seconds);
} catch (Exception e) {
pool.returnBrokenResource(shardedJedis);
shardedJedis = null;
log.error(e);
throw new JedisException(e);
}finally{
if (shardedJedis != null) {
pool.returnResource(shardedJedis);
}
}
}
public void expire(String key, int seconds) {
ShardedJedis shardedJedis = null;
try {
shardedJedis = pool.getResource();
shardedJedis.expire(key, seconds);
} catch (Exception e) {
pool.returnBrokenResource(shardedJedis);
shardedJedis = null;
log.error(e);
throw new JedisException(e);
}finally{
if (shardedJedis != null) {
pool.returnResource(shardedJedis);
}
}
}
public boolean exists(String key) {
ShardedJedis shardedJedis = null;
boolean bool = false;
try {
shardedJedis = pool.getResource();
bool = shardedJedis.exists(key);
} catch (Exception e) {
pool.returnBrokenResource(shardedJedis);
shardedJedis = null;
log.error(e);
throw new JedisException(e);
}finally{
if (shardedJedis != null) {
pool.returnResource(shardedJedis);
}
}
return bool;
}
public String type(String key) {
ShardedJedis shardedJedis = null;
String type =null;
try {
shardedJedis = pool.getResource();
type = shardedJedis.type(key);
} catch (Exception e) {
pool.returnBrokenResource(shardedJedis);
shardedJedis = null;
log.error(e);
throw new JedisException(e);
}finally{
if (shardedJedis != null) {
pool.returnResource(shardedJedis);
}
}
return type;
}
public String hget(String key, String field) {
ShardedJedis shardedJedis = null;
String value =null;
try {
shardedJedis = pool.getResource();
value = shardedJedis.hget(key, field);
} catch (Exception e) {
pool.returnBrokenResource(shardedJedis);
shardedJedis = null;
log.error(e);
throw new JedisException(e);
}finally{
if (shardedJedis != null) {
pool.returnResource(shardedJedis);
}
}
return value;
}
public Map hgetAll(String key) {
ShardedJedis shardedJedis = null;
Map map =null;
try {
shardedJedis = pool.getResource();
map = shardedJedis.hgetAll(key);
} catch (Exception e) {
pool.returnBrokenResource(shardedJedis);
shardedJedis = null;
log.error(e);
throw new JedisException(e);
}finally{
if (shardedJedis != null) {
pool.returnResource(shardedJedis);
}
}
return map;
}
public Set> smembers(String key) {
ShardedJedis shardedJedis = null;
Set> set =null;
try {
shardedJedis = pool.getResource();
set = shardedJedis.smembers(key);
} catch (Exception e) {
pool.returnBrokenResource(shardedJedis);
shardedJedis = null;
log.error(e);
throw new JedisException(e);
}finally{
if (shardedJedis != null) {
pool.returnResource(shardedJedis);
}
}
return set;
}
public void delSetObj(String key, String field) {
ShardedJedis shardedJedis = null;
try {
shardedJedis = pool.getResource();
shardedJedis.srem(key, field);
} catch (Exception e) {
pool.returnBrokenResource(shardedJedis);
shardedJedis = null;
log.error(e);
throw new JedisException(e);
}finally{
if (shardedJedis != null) {
pool.returnResource(shardedJedis);
}
}
}
public boolean isNotField(String key, String field) {
ShardedJedis shardedJedis = null;
boolean bool = false;
try {
shardedJedis = pool.getResource();
bool = shardedJedis.sismember(key, field);
} catch (Exception e) {
pool.returnBrokenResource(shardedJedis);
shardedJedis = null;
log.error(e);
throw new JedisException(e);
}finally{
if (shardedJedis != null) {
pool.returnResource(shardedJedis);
}
}
return bool;
}
public void append(String key, String value) {
ShardedJedis shardedJedis = null;
try {
shardedJedis = pool.getResource();
shardedJedis.append(key, value);
} catch (Exception e) {
pool.returnBrokenResource(shardedJedis);
shardedJedis = null;
log.error(e);
throw new JedisException(e);
}finally{
if (shardedJedis != null) {
pool.returnResource(shardedJedis);
}
}
}
public Set getAllKeys(){
ShardedJedis shardedJedis = null;
Set keys = new HashSet();
try {
shardedJedis = pool.getResource();
Collection shards = shardedJedis.getAllShards();
if(shards != null && !shards.isEmpty()) {
for (Jedis shard : shards) {
keys.addAll(shard.keys("*"));
}
}
return keys;
} catch (Exception e) {
pool.returnBrokenResource(shardedJedis);
shardedJedis = null;
log.error(e);
throw new JedisException(e);
}finally{
if (shardedJedis != null) {
pool.returnResource(shardedJedis);
}
}
}
public void flushAll(){
ShardedJedis shardedJedis = null;
try {
shardedJedis = pool.getResource();
Collection shards = shardedJedis.getAllShards();
if(shards != null && !shards.isEmpty()) {
for (Jedis shard : shards) {
shard.flushAll();
}
}
} catch (Exception e) {
pool.returnBrokenResource(shardedJedis);
shardedJedis = null;
log.error(e);
throw new JedisException(e);
}finally{
if (shardedJedis != null) {
pool.returnResource(shardedJedis);
}
}
}
public int getMaxActive() {
return maxActive;
}
public void setMaxActive(int maxActive) {
this.maxActive = maxActive;
}
public Integer getMaxIdle() {
return maxIdle;
}
public void setMaxIdle(Integer maxIdle) {
this.maxIdle = maxIdle;
}
public Integer getMaxWait() {
return maxWait;
}
public void setMaxWait(Integer maxWait) {
this.maxWait = maxWait;
}
public void setMaxActive(Integer maxActive) {
this.maxActive = maxActive;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public static void main(String[] args){
RedisUtil r = new RedisUtil();
r.init();
Set keys = r.getAllKeys();
System.out.println(keys);
// r.flushAll();
// System.out.println(keys);
TSUser t = r.getTSUser("eyJhbGciOiJIUzI1NiIsImVuY3J5cHRpb24iOiJIUzI1NiIsInR5cCI6IkpXVCIsInR5cGUiOiJKV1QifQ.eyJleHAiOjE2MzUzMjIxMjIsIlRpbWUiOjE2MzUyMzU3MjIyNTAsInVzZXJDb2RlIjoiYWRtaW4ifQ.ra9t1TyuiHjsuV58MGkX6SKY8hIxy-xS5QGYUfO--iA");
// r.get("eyJhbGciOiJIUzI1NiIsImVuY3J5cHRpb24iOiJIUzI1NiIsInR5cCI6IkpXVCIsInR5cGUiOiJKV1QifQ.eyJleHAiOjE2MzUzMTY5NzcsIlRpbWUiOjE2MzUyMzA1Nzc2NTksInVzZXJDb2RlIjoiYWRtaW4ifQ.wOQ1eC6q2djSMG4CuNoywoua6FLM--ZOvE_ATr5lix0");
// System.out.println(r.get("eyJhbGciOiJIUzI1NiIsImVuY3J5cHRpb24iOiJIUzI1NiIsInR5cCI6IkpXVCIsInR5cGUiOiJKV1QifQ.eyJleHAiOjE2MzUzMTk0MDMsIlRpbWUiOjE2MzUyMzMwMDMyMDIsInVzZXJDb2RlIjoiYWRtaW4ifQ.edOlNofAKIJM5osUQS0_B8fe1DD9K_mXMHy-J6WS6xA"));
// r.set("aaaa", "aaaaa");
// System.out.println(r.hgetAll("com.ewin.erp.basebus.entity.BillInfo"));
}
}
里面的TsUser需要删除,没有意义的对象



