注册分布式锁添加

master
lvxinran 2021-08-09 14:14:07 +08:00
parent 70f21cea83
commit f28de9e226
2 changed files with 28 additions and 17 deletions

View File

@ -149,8 +149,13 @@ public class GetUserController extends HttpServlet {
}
int uid = 0;
//加分布式锁
List<DBObject> userInfos = BaseGlobal.getInstance().mongoDBPool.find(_COLLECTION_NAME, dbObject);
if (userInfos.size() == 0) {
try{
boolean getLock=false;
while(!getLock){
getLock = BaseGlobal.getInstance().redisApp.tryGetDistributedLock(RedisKey.REGISTER_LOCK, "", "get", 800);
if (getLock&&userInfos.size() == 0) {
DBObject next = server_info.iterator().next();
Object register_state = next.get("register_state");
if(register_state!=null&& register_state.equals("0")){
@ -169,6 +174,10 @@ public class GetUserController extends HttpServlet {
}
BaseGlobal.getInstance().mongoDBPool.save(_COLLECTION_NAME, dbObject);
}
}
}finally {
BaseGlobal.getInstance().redisApp.releaseDistributedLock(RedisKey.REGISTER_LOCK,"","get");
}
Random random = new Random();
int utoken = Math.abs(random.nextInt());
uid = (int) userInfos.get(0).get("uid");

View File

@ -19,4 +19,6 @@ public interface RedisKey {
* openId
*/
String Ban_Open_Id = "Ban_Open_Id";
String REGISTER_LOCK = "REGISTER_LOCK";
}