您的位置:首页 > 其它

一个简单的分布式锁实现方案

2017-06-08 16:11 309 查看
package com.taobao.upp.subcommon.bizlogic.rights.support;

import javax.annotation.Resource;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Component;

import com.taobao.tair.DataEntry;
import com.taobao.tair.Result;
import com.taobao.tair.ResultCode;
import com.taobao.tair.impl.mc.MultiClusterTairManager;

@Component("couponIssueLockManage")
public class CouponIssueLockSupport {

private static final Log logger = LogFactory.getLog(CouponIssueLockSupport.class);

@Resource(name = "tairManager")
private MultiClusterTairManager multiClusterTairManager;

public boolean getLock(String lockKey){
Result<DataEntry> dataResult = multiClusterTairManager.get(643, lockKey);
if(dataResult.isSuccess()){
if(dataResult.getValue()==null){
ResultCode resultCode = multiClusterTairManager.put(643, lockKey, 1, 10, 60);
if(resultCode.isSuccess()){
return true;
}
}
}

logger.error("权益加锁失败,lockKey="+lockKey);
return false;
}

public boolean releaseLock(String lockKey){
ResultCode resultCode = multiClusterTairManager.invalid(643, lockKey);
if(resultCode.isSuccess()){
return true;
}

logger.error("权益解锁失败,lockKey="+lockKey);
return false;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: