######这里是代码
String userDaZuoBuffKey = "UserDaZuoBuffByUserId:" + userId;
UserDaZuoBuff userDaZuoBuff = (UserDaZuoBuff) redisTemplate.opsForValue().get(userDaZuoBuffKey);
if (userDaZuoBuff == null) {
synchronized (this.getClass()) {
userDaZuoBuff = (UserDaZuoBuff) redisTemplate.opsForValue().get(userDaZuoBuffKey);
if (userDaZuoBuff == null) {
userDaZuoBuff = userDaZuoBuffExtendsMapper.findUserDaZuoBuffByUserId(userId);
redisTemplate.opsForValue().set(userDaZuoBuffKey, userDaZuoBuff);
}
}
}
######这里是全部代码
@Override
public JsonData startDaZuo(Integer userId, String mapName,Integer mapX,Integer mapY) {
//判断请求是否超时
String UserStateInfoKey = "UserStateInfoByUserId:" + userId;
UserStateInfo userStateInfo = (UserStateInfo) redisTemplate.opsForValue().get(UserStateInfoKey);
if (userStateInfo == null) {
synchronized (this.getClass()) {
userStateInfo = (UserStateInfo) redisTemplate.opsForValue().get(UserStateInfoKey);
if (userStateInfo == null) {
userStateInfo = userStateInfoExtendsMapper.findUserStateInfoByUserId(userId);
redisTemplate.opsForValue().set(UserStateInfoKey, userStateInfo);
}
}
}
if (GetTimeUtil.returnTimeNumber(userStateInfo.getReqTime()) < 5000) {
//超时
userStateInfo.setReqTime(new Date());
userStateInfoExtendsMapper.updateByPrimaryKey(userStateInfo);
return JsonData.buildError("请求过快");
}
//获取玩家打坐buff加成表数据
String userDaZuoBuffKey = "UserDaZuoBuffByUserId:" + userId;
UserDaZuoBuff userDaZuoBuff = (UserDaZuoBuff) redisTemplate.opsForValue().get(userDaZuoBuffKey);
if (userDaZuoBuff == null) {
synchronized (this.getClass()) {
userDaZuoBuff = (UserDaZuoBuff) redisTemplate.opsForValue().get(userDaZuoBuffKey);
if (userDaZuoBuff == null) {
userDaZuoBuff = userDaZuoBuffExtendsMapper.findUserDaZuoBuffByUserId(userId);
redisTemplate.opsForValue().set(userDaZuoBuffKey, userDaZuoBuff);
}
}
}
//获取玩家等级表数据
String userLvKey = "UserLvByUserId:" + userId;
UserLv userLv = (UserLv) redisTemplate.opsForValue().get(userLvKey);
if (userLv == null) {
synchronized (this.getClass()) {
userLv = (UserLv) redisTemplate.opsForValue().get(userLvKey);
if (userLv == null) {
userLv = userLvExtendsMapper.findUserLvByUserId(userId);
redisTemplate.opsForValue().set(userLvKey, userLv);
}
}
}
//获取当前地图数据
String mapInfoKey = "MapInfoByMapName:" + mapName;
MapInfo mapInfo = (MapInfo) redisTemplate.opsForValue().get(mapInfoKey);
if (mapInfo == null) {
synchronized (this.getClass()) {
mapInfo = (MapInfo) redisTemplate.opsForValue().get(mapInfoKey);
if (mapInfo == null) {
mapInfo = mapInfoExtendsMapper.findMapInfoByMapName(mapName);
redisTemplate.opsForValue().set(mapInfoKey, mapInfo);
}
}
}
//获取玩家当前坐标数据
String userMapKey = "UserMapByUserId:" + userId;
UserMap userMap = (UserMap) redisTemplate.opsForValue().get(userMapKey);
if (userMap == null) {
synchronized (this.getClass()) {
userMap = (UserMap) redisTemplate.opsForValue().get(userMapKey);
if (userMap == null) {
userMap = userMapExtendsMapper.findUserMapByUserId(userId);
redisTemplate.opsForValue().set(userMapKey, userMap);
}
}
}
//修改当前玩家坐标数据
if (userMap.getMapX()!=mapX||userMap.getMapY()!=mapY){
userMap.setMapX(mapX);
userMap.setMapY(mapY);
userMapExtendsMapper.updateByPrimaryKey(userMap);
redisTemplate.opsForValue().set(userMapKey,userMap);
}
//扣除buff
//根据buff获得四个增益
//恢复气血
//获得灵力
//获得魂力
//增加金币
return null;
}
这个示例里面加不加锁,好像没啥用也