增加玉虚论道分布式锁

DESKTOP-C3M45P4\dengdan 2025-04-27 23:50:22 +08:00
parent fea7604c51
commit d49c2e0137
2 changed files with 12 additions and 0 deletions

View File

@ -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存储个人基本信息

View File

@ -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() {