@Component
public class redisLock {
Logger logger= LoggerFactory.getLogger(RedisLock.class);
private static final String LOCK_SUCCESS = "OK";
private static final String SET_IF_NOT_EXIST = "NX";//NX是毫秒,EX是秒
private static final String SET_WITH_EXPIRE_TIME = "PX";
創新互聯建站是一家集網站建設,興寧企業網站建設,興寧品牌網站建設,網站定制,興寧網站建設報價,網絡營銷,網絡優化,興寧網站推廣為一體的創新建站企業,幫助傳統企業提升企業形象加強企業競爭力。可充分滿足這一群體相比中小企業更為豐富、高端、多元的互聯網需求。同時我們時刻保持專業、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們為更多的企業打造出實用型網站。
/**
* 嘗試獲取分布式鎖
* @param lockKey 鎖
* @param requestId 請求標識
* @param expireTime 超期時間
* @return 是否獲取成功
*/
public boolean tryGetDistributedLock(String lockKey, String requestId, int expireTime) {
Jedis jedis=null;
try{
jedis = Const.jedisPoolCommon.getResource();
String result =jedis.set(lockKey, requestId, SET_IF_NOT_EXIST, SET_WITH_EXPIRE_TIME, expireTime);
if (LOCK_SUCCESS.equals(result)) {
return true;
}
}catch (Exception ex){
logger.error("tryGetDistributedLock異常"+ex);
}finally {
if(jedis!=null){
jedis.close();
}
}
return false;
}
private static final Long RELEASE_SUCCESS = 1L;
/**
* 釋放分布式鎖
* @param lockKey 鎖
* @param requestId 請求標識
* @return 是否釋放成功
*/
public boolean releaseDistributedLock( String lockKey, String requestId) {
Jedis jedis = null;
try{
jedis=Const.jedisPoolCommon.getResource();
String script = "if redis.call('get', KEYS[1]) == ARGV[1] then return redis.call('del', KEYS[1]) else return 0 end";
Object result = jedis.eval(script, Collections.singletonList(lockKey), Collections.singletonList(requestId));
if (RELEASE_SUCCESS.equals(result)) {
return true;
}
}catch (Exception ex){
logger.error("releaseDistributedLock異常"+ex);
}finally {
if(jedis!=null){
jedis.close();
}
}
return false;
}
}
文章題目:RedisLock分布式redis鎖
文章URL:http://vcdvsql.cn/article34/pdcjse.html
成都網站建設公司_創新互聯,為您提供云服務器、網頁設計公司、品牌網站設計、微信小程序、外貿網站建設、網站營銷
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯