RedisTools.java
package com.sys.util;
import java.util.List;
import java.util.Map;
import java.util.Set;
import redis.clients.jedis.Jedis;
/**
* Redis工具类
* @author liuJack
*
*/
public class RedisTools {
private static Jedis jedis = null;
private static final String IP = "127.0.0.1";
private static final Integer PROT = 6666;
static{
jedis = new Jedis(IP,PROT);
}
/**
* 获取值
* @param key
* @return
*/
public static final String get(String key) {
return jedis.get(key);
}
/**
* 设置list信息,(多个)
* @param listName list名称
* @param list 值的集合
*/
public static final void setList(String listName,List<String> list) {
if(list!=null){
for (String value : list) {
jedis.lpush(listName, value);
}
}
}
/**
* 设置list信息,(单个)
* @param listName list名称
* @param value 值
*/
public static final void setList(String listName,String value) {
jedis.lpush(listName, value);
}
/**
* 获得指定集合
* @param listName 集合名词
* @param start 开始值
* @param end 结束值
* @return 结果集合
*/
public static final List<String> getList(String listName,Long start,Long end) {
return jedis.lrange(listName, start, end);
}
/**
* 清空所有数据
*/
public static final void clearAll(){
jedis.flushDB();
}
/**
* 判断某key值是否存在
* @param key 需要检查的key
* @return
*/
public static final Boolean exists(String key){
return jedis.exists(key);
}
/**
* 添加数据--如果存此key值,则覆盖
* @param key 键
* @param value 值
*/
public static final void set(String key,Object value){
jedis.set(key, value.toString());
}
/**
* 获得所有的key
* @return
*/
public static final Set<String> getAllKeys(){
return jedis.keys("*");
}
/**
* 删除指定键,如果不存在则忽略
* @param key 需要删除的键
*/
public static final void delByKeys(String... keys){
if(keys==null) return;
for (String key : keys) {
jedis.del(key);
}
}
/**
* 获得Jedis对象
* @return Jedis对象
*/
public static final Jedis getJedis(){
return jedis;
}
public static final void setMap(Map<String, Object> map){
if(map==null) return;
for (String key : map.keySet()) {
if(map.get(key)!=null){
jedis.set(key, map.get(key).toString());
}
}
}
}
LockUtils.java
package com.sys.util;
/**
* 加锁工具类
* @author liuJack
*
*/
public class LockUtils {
/**间隔获得时间*/
public static final Integer sleep_millis = 1000;
/**最大等待时间*/
public static final long max_await = 1000*50;
private static final String lock_no_title = "lock_user_";
/**
* 锁住用户信息
* @param userId
*/
public static final void lockUser(String userId){
RedisTools.set(lock_no_title+userId, "");
}
/**
* 取消锁
* @param userId
*/
public static final void unLock(String userId){
RedisTools.delByKeys(lock_no_title+userId);
}
/**
* 检查用户是否锁住
* @param userId
* @return true:执行成功,false:等待超时,不能向下执行
*/
@SuppressWarnings("static-access")
public static final boolean checkUserLock(String userId){
boolean result = true;
try {
Thread thread = Thread.currentThread();
long millis = System.currentTimeMillis();
while (true) {
if(RedisTools.exists(lock_no_title+userId)){
if((System.currentTimeMillis()-millis)<max_await)
thread.sleep(sleep_millis);
else {
result = false;
break;
}
}else {
result = true;
break;
}
}
} catch (InterruptedException e) {
e.printStackTrace();
}
return result;
}
}