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

xiaoxiao2021-02-28  89

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; } }
转载请注明原文地址: https://www.6miu.com/read-85337.html

最新回复(0)