1:为实时统计配置中jediscluster改为每次使用都获取一个新的

2:添加根据配置id获取编译,组,域等信息的接口
3:修改获取或释放redis分布式锁后,将redis连接释放
4:解决冲突
This commit is contained in:
renkaige
2018-12-09 17:30:24 +06:00
parent 09c5a06947
commit ef35100af5
19 changed files with 303 additions and 128 deletions

View File

@@ -306,9 +306,10 @@ public class JedisUtils {
* @return 是否获取成功
*/
public static Boolean lock(String requestId) {
Jedis resource = getResource(0);
String key = "redisDistributedLock";
String var1 = getResource(0).set(key, requestId, SET_IF_NOT_EXIST, SET_WITH_EXPIRE_TIME,
Constants.REDISLOCKTIME);
String var1 = resource.set(key, requestId, SET_IF_NOT_EXIST, SET_WITH_EXPIRE_TIME, Constants.REDISLOCKTIME);
returnResource(resource);
if (LOCK_SUCCESS.equals(var1)) {
return true;
}
@@ -322,11 +323,13 @@ public class JedisUtils {
* @return
*/
public static Boolean unLock(String value) {
Jedis resource = getResource(0);
String key = "redisDistributedLock";
// 这个字符串是个lua脚本代表的意思是如果根据key拿到的value跟传入的value相同就执行del否则就返回0【保证安全性】
String luaScript = "if redis.call(\"get\",KEYS[1]) == ARGV[1] then return redis.call(\"del\",KEYS[1]) else return 0 end";
// 这个命令就是去执行lua脚本KEYS的集合就是第二个参数ARGV的集合就是第三参数【保证解锁的原子操作】
Object var2 = getResource(0).eval(luaScript, Collections.singletonList(key), Collections.singletonList(value));
Object var2 = resource.eval(luaScript, Collections.singletonList(key), Collections.singletonList(value));
returnResource(resource);
if (UNLOCK_SUCCESS == var2) {
return true;
}