增加玉虚论道分布式锁
parent
fea7604c51
commit
d49c2e0137
|
|
@ -317,6 +317,8 @@ public class RedisKey {
|
||||||
//玉虚论道
|
//玉虚论道
|
||||||
public static final String CROSS_YUXULUNDAO_RANK = "CROSS_YUXULUNDAO_RANK";//排行榜信息 废弃
|
public static final String CROSS_YUXULUNDAO_RANK = "CROSS_YUXULUNDAO_RANK";//排行榜信息 废弃
|
||||||
public static final String CROSS_YUXULUNDAO_RANK_PERSON = "CROSS_YUXULUNDAO_RANK_PERSON";//排行榜信息
|
public static final String CROSS_YUXULUNDAO_RANK_PERSON = "CROSS_YUXULUNDAO_RANK_PERSON";//排行榜信息
|
||||||
|
public static final String CROSS_YUXULUNDAO_SEASON_LOCK = "CROSS_YUXULUNDAO_SEASON_LOCK";//玉虚论道赛季结算锁
|
||||||
|
public static final String CROSS_YUXULUNDAO_SEASON_LOCK_MARK = "CROSS_YUXULUNDAO_SEASON_LOCK_MARK";//玉虚论道赛季结算锁标识,记录结算的分组和服务器id
|
||||||
public static final String CROSS_YUXULUNDAO_ROBOT_INFO = "CROSS_YUXULUNDAO_ROBOT_INFO";//机器人信息
|
public static final String CROSS_YUXULUNDAO_ROBOT_INFO = "CROSS_YUXULUNDAO_ROBOT_INFO";//机器人信息
|
||||||
public static final String CROSS_YUXULUNDAO_RECORD = "CROSS_YUXULUNDAO_RECORD";//战斗回放
|
public static final String CROSS_YUXULUNDAO_RECORD = "CROSS_YUXULUNDAO_RECORD";//战斗回放
|
||||||
public static final String CROSS_SERVER_USER = "CROSS_SERVER_USER";//redis存储个人基本信息
|
public static final String CROSS_SERVER_USER = "CROSS_SERVER_USER";//redis存储个人基本信息
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package com.ljsd.jieling.logic.arena;
|
package com.ljsd.jieling.logic.arena;
|
||||||
|
|
||||||
|
import com.ljsd.GameApplication;
|
||||||
import com.ljsd.fight.ArenaRecord;
|
import com.ljsd.fight.ArenaRecord;
|
||||||
import com.ljsd.jieling.db.redis.RedisKey;
|
import com.ljsd.jieling.db.redis.RedisKey;
|
||||||
import com.ljsd.jieling.db.redis.RedisUtil;
|
import com.ljsd.jieling.db.redis.RedisUtil;
|
||||||
|
|
@ -99,6 +100,11 @@ public class CrossYuxulundaoLogic {
|
||||||
if (crossGroup == -1) {
|
if (crossGroup == -1) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
//分布式锁,保证一个组只有一个服进行结算
|
||||||
|
boolean lock = RedisUtil.getInstence().lock(RedisKey.CROSS_YUXULUNDAO_SEASON_LOCK + RedisKey.Delimiter_colon + crossGroup, TimeUtils.ONE_HOUR);
|
||||||
|
if (!lock) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
String title = SErrorCodeEerverConfig.getI18NMessage("MsRankTitle");
|
String title = SErrorCodeEerverConfig.getI18NMessage("MsRankTitle");
|
||||||
String rkey = RedisUtil.getInstence().getKeyLocal(RedisKey.CROSS_YUXULUNDAO_RANK_PERSON, Integer.toString(crossGroup));
|
String rkey = RedisUtil.getInstence().getKeyLocal(RedisKey.CROSS_YUXULUNDAO_RANK_PERSON, Integer.toString(crossGroup));
|
||||||
Set<String> arenaRank = RedisUtil.getInstence().getReverseZset(rkey, 0, -1);
|
Set<String> arenaRank = RedisUtil.getInstence().getReverseZset(rkey, 0, -1);
|
||||||
|
|
@ -115,6 +121,10 @@ public class CrossYuxulundaoLogic {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//记录结算的组id和服务器id,保留3天
|
||||||
|
String lockMark = RedisKey.CROSS_YUXULUNDAO_SEASON_LOCK_MARK;
|
||||||
|
RedisUtil.getInstence().set(lockMark, crossGroup + "_" + GameApplication.serverId);
|
||||||
|
RedisUtil.getInstence().expireMills(lockMark, TimeUtils.DAY * 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getSeason() {
|
public int getSeason() {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue