修改redis锁

back_recharge
duhui 2023-04-06 14:13:13 +08:00
parent d07a2260a7
commit e5753431c4
4 changed files with 38 additions and 12 deletions

View File

@ -36,13 +36,13 @@ public class SevenWorldFunction implements FunctionManager {
public void closeAction(){
int crossGroup = GlobleSystemLogic.crossGroup;
String lockKey = "SEVEN_WORLD_RESET_LOCK" + RedisKey.Delimiter_colon + crossGroup;
boolean lock = RedisUtil.getInstence().lock(lockKey, TimeUtils.ONE_SECOND * 60);
boolean lock = RedisUtil.getInstence().lock(lockKey, TimeUtils.ONE_MINUTE*5);
if (!lock) {
//没有拿到锁直接返回
LOGGER.error("七界试炼,重置排行榜退出, key{} 跨服分组 ={},锁状态:{},未获取到锁",lockKey, crossGroup, lock);
return;
}
RedisUtil.getInstence().expire2(lockKey,TimeUtils.ONE_MINUTE*5);
LOGGER.info("七界试炼活动结束,开始发奖...");
// 排行榜
String crossRedisKey = RankContext.getRankEnum(RankEnum.CROSS_SEVEN_WORLD_RANK.getType()).getCrossRedisKey();

View File

@ -119,6 +119,27 @@ public class RedisUtil {
}
}
/**
*
*
* @param key
*
* @param time
* ()
* @return
*/
public boolean expire2(String key, long time) {
try {
if (time > 0) {
redisTemplate.expire(key, time, TimeUnit.MILLISECONDS);
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* key
@ -187,7 +208,7 @@ public class RedisUtil {
// 重命名
redisTemplate.rename(oldName,newName);
// 设置过期时间
expire(newName,time);
expire2(newName,time);
}
}
}
@ -212,7 +233,7 @@ public class RedisUtil {
// 重命名
redisTemplate.rename(oldName,newName);
// 设置过期时间
expire(newName,time);
expire2(newName,time);
}
}
return;

View File

@ -75,7 +75,7 @@ public class RidingSwardActivity extends AbstractActivity{
MailLogic.getInstance().sendMail(user.getId(),title,content,reward,TimeUtils.nowInt(),Global.MAIL_EFFECTIVE_TIME);
}
// 删除key
RedisUtil.getInstence().rename(TimeUtils.ONE_DAY*3/1000,RedisUtil.getInstence().getKey(RedisKey.RIDING_SWARD_RECORD, String.valueOf(user.getId())));
RedisUtil.getInstence().rename(TimeUtils.ONE_DAY*3,RedisUtil.getInstence().getKey(RedisKey.RIDING_SWARD_RECORD, String.valueOf(user.getId())));
}
}
}

View File

@ -765,7 +765,7 @@ public class ArenaLogic {
}
public void LuoFuSendReward() {
LOGGER.info("罗浮争霸,开始发奖");
LOGGER.info("罗浮争霸,开始发奖。。。");
Map<Integer, ISession> sessionMap = OnlineUserManager.sessionMap;
for (Map.Entry<Integer, ISession> entry : sessionMap.entrySet()) {
MessageUtil.sendIndicationMessage(entry.getValue(), 1, MessageTypeProto.MessageType.GetWorldArenaInfoIndication_VALUE, null, true);
@ -774,10 +774,14 @@ public class ArenaLogic {
if (crossGroup == -1) {
return;
}
boolean lock = RedisUtil.getInstence().lock("WORLD_ARENA_SEND_REWARD_RANK:" + crossGroup, TimeUtils.ONE_MINUTE * 5);
String lockKey = "WORLD_ARENA_SEND_REWARD_RANK:" + crossGroup;
boolean lock = RedisUtil.getInstence().lock(lockKey, TimeUtils.ONE_MINUTE * 5);
if (!lock) {
LOGGER.error("罗浮争锋,发奖退出,未获取到锁:{}",lockKey);
return;
}
RedisUtil.getInstence().expire2(lockKey,TimeUtils.ONE_MINUTE * 5);
AbstractRank rank = RankContext.getRankEnum(RankEnum.CROSS_SERVICE_ARENA.getType());
String title = SErrorCodeEerverConfig.getI18NMessage("mserverarena_reward_title");
TreeMap<Integer, SMServerArenaReward> rewardMapByRank = SMServerArenaReward.rewardMapByRank;
@ -811,7 +815,7 @@ public class ArenaLogic {
} catch (Exception e) {
e.printStackTrace();
}
LOGGER.info("罗浮争霸:转到休息状态,nowstate:{} to RELAX_STATE", getState());
LOGGER.info("罗浮争霸:发奖结束,转到休息状态,nowstate:{} to RELAX_STATE", getState());
}
/**
@ -826,7 +830,7 @@ public class ArenaLogic {
long time = TimeUtils.getBeginOfDay(TimeUtils.now() + reward[1] * 1000L) + TimeUtils.DAY;
redisUtil.putMapEntry2(key,String.valueOf(reward[0]),time);
}
redisUtil.expire(key,TimeUtils.WEEK/1000);
redisUtil.expire2(key,TimeUtils.WEEK);
}
/**
@ -900,10 +904,11 @@ public class ArenaLogic {
//分布式锁,保证一个组只有一个服进行初始化
boolean lock = RedisUtil.getInstence().lock("WORLD_ARENA_INIT_RANK:" + crossGroup, TimeUtils.ONE_MINUTE * 5);
if (!lock) {
LOGGER.error("罗浮争锋,初始化排行榜退出,未获取到锁");
return;
}
LOGGER.info("跨服信息初始化...");
RedisUtil.getInstence().expire("WORLD_ARENA_INIT_RANK:" + crossGroup, TimeUtils.ONE_MINUTE * 5);
LOGGER.info("罗浮争锋,初始化排行榜开始...");
RedisUtil.getInstence().expire2("WORLD_ARENA_INIT_RANK:" + crossGroup, TimeUtils.ONE_MINUTE * 5);
String key1 = RedisUtil.getInstence().getKey(RedisKey.CROSS_ARENA_ROBOT_INFO, String.valueOf(crossGroup));
String key2 = RedisUtil.getInstence().getKey(RedisKey.CROSS_SERVICE_ARENA, String.valueOf(crossGroup));
@ -934,7 +939,7 @@ public class ArenaLogic {
robotInfo.put(String.valueOf(robotIndex), new CrossArenaEnemy(robotIds.get(robotIndex), robotIndex, groupList.get(server), 0, 0, random.nextBoolean(), PlayerLogic.getInstance().getRandomName2WithOutVerify(), config.getTotalForce(), config.getRobotLevel()));
}
LOGGER.info("跨服信息初始化结束");
LOGGER.info("罗浮争锋,初始化排行榜结束");
RedisUtil.getInstence().putMapEntrys(RedisKey.CROSS_ARENA_ROBOT_INFO, String.valueOf(crossGroup), robotInfo);
}