新聞中心
這里有您想知道的互聯網營銷解決方案
樂觀鎖在redis中的實現(樂觀鎖和redis)
樂觀鎖在Redis中的實現

Redis是一種高性能的內存型鍵值對存儲系統(tǒng),由開源社區(qū)在BSD許可下持續(xù)開發(fā)和維護。Redis支持復雜的數據類型,如列表,集合,有序集合,哈希表等,并且支持事務,樂觀鎖,數據分庫等功能。在介紹Redis樂觀鎖之前,先了解一下樂觀鎖概念,樂觀鎖也稱為無鎖,是一種數據庫上使用的一種大致的策略,優(yōu)點是不對性能進行太多的降低,缺點是由于某些情況會導致數據出錯。
Redis樂觀鎖利用setnx(set if not exist) (SET IF NOT EXIST) 事務支持去實現,如果KEY不存在,則可以設置成功,否則可以判斷失敗。Redis樂觀鎖的具體實現:
//首先構造條件
String sessionId="ID-1234";
//String key=sessionId;
String key="lockKey"+sessionId;
int value=0;
//Random random=new Random();
//int temp = random.nextInt(100000);
//定義超時時間
int timeout=100;
long startTime=System.nanoTime();
//開啟事務
redis.multi();
//設置key的值,如果不存在則設置成功
redis.setnx(key, value);
//設置key的過期時間
redis.expire(key, timeout);
//提交事務
redis.exec();
//加鎖成功
if(redis.get(key) .equals (value) ){
//業(yè)務操作
}else {//加鎖失敗
if(System.nanoTime()-startTime
//嘗試重新加鎖
}else{
//超時失敗
}
}
//釋放鎖
redis.del(key);
上面就是Redis實現樂觀鎖的基本步驟,其中設置key的值與獲取key的值是使用setnx(set if not exist)事務去實現,還可以使用watch命令來實現樂觀鎖,使用watch更加簡單,但同樣局限于事務環(huán)境下。希望上述介紹對您有所幫助。
香港服務器選創(chuàng)新互聯,2H2G首月10元開通。
創(chuàng)新互聯(www.cdcxhl.com)互聯網服務提供商,擁有超過10年的服務器租用、服務器托管、云服務器、虛擬主機、網站系統(tǒng)開發(fā)經驗。專業(yè)提供云主機、虛擬主機、域名注冊、VPS主機、云服務器、香港云服務器、免備案服務器等。
網頁標題:樂觀鎖在redis中的實現(樂觀鎖和redis)
文章來源:http://m.fisionsoft.com.cn/article/dhpgcge.html


咨詢
建站咨詢
