增加玉虚论道分布式锁
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_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_RECORD = "CROSS_YUXULUNDAO_RECORD";//战斗回放
|
||||
public static final String CROSS_SERVER_USER = "CROSS_SERVER_USER";//redis存储个人基本信息
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.ljsd.jieling.logic.arena;
|
||||
|
||||
import com.ljsd.GameApplication;
|
||||
import com.ljsd.fight.ArenaRecord;
|
||||
import com.ljsd.jieling.db.redis.RedisKey;
|
||||
import com.ljsd.jieling.db.redis.RedisUtil;
|
||||
|
|
@ -99,6 +100,11 @@ public class CrossYuxulundaoLogic {
|
|||
if (crossGroup == -1) {
|
||||
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 rkey = RedisUtil.getInstence().getKeyLocal(RedisKey.CROSS_YUXULUNDAO_RANK_PERSON, Integer.toString(crossGroup));
|
||||
Set<String> arenaRank = RedisUtil.getInstence().getReverseZset(rkey, 0, -1);
|
||||
|
|
@ -115,6 +121,10 @@ public class CrossYuxulundaoLogic {
|
|||
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() {
|
||||
|
|
|
|||
Loading…
Reference in New Issue