新聞中心
關(guān)于Redis實現(xiàn)隨機數(shù)鎖定設(shè)置,本文依據(jù)一定的情況,提供了兩種可行的實現(xiàn)方案,以幫助讀者較為快捷的實現(xiàn)該功能。

創(chuàng)新互聯(lián)專注于泗陽企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站,商城系統(tǒng)網(wǎng)站開發(fā)。泗陽網(wǎng)站建設(shè)公司,為泗陽等地區(qū)提供建站服務(wù)。全流程按需開發(fā)網(wǎng)站,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
讓我們來看一下我們需要解決的問題:通過Redis設(shè)置一個字符串,根據(jù)每個用戶的ID號生成一個固定位數(shù)的隨機數(shù),在某一時間段內(nèi),該用戶會獲得訪問專屬隨機數(shù),這是一種資源有價,缺份,時時變換的特殊鎖定服務(wù)。
本文介紹了在實現(xiàn)這種隨機數(shù)鎖定服務(wù)時,利用Redis給出的SETNX和EXPIRE兩個原子操作來實現(xiàn)此功能;本文介紹了將Redis和JavaScript編寫出時間戳+每個用戶的ID號的隨機數(shù),用作請求服務(wù)的唯一前綴代碼,兩種可行的實現(xiàn)方案。
第一種方案是使用SETNX和EXPIRE來實現(xiàn):
//應(yīng)用代碼
VAR startTime = new Date();
var uid = '12345'
var randomStr = startTime.getTime() + uid; //生成隨機字符串
var result = redis.SETNX(randomStr,1); //設(shè)置鍵名及值
if (result == 1){
redis.EXPIRE(randomStr, expireTime); //設(shè)置key的過期時間
console.log('設(shè)置鎖定成功');
}else {
console.log('設(shè)置鎖定失敗');
}
第二種方案是在Redis中設(shè)置時間戳,把用戶ID號和時間戳一起當(dāng)作Key,之后,在JavaScript編寫出帶有時間戳的隨機數(shù)用作請求服務(wù)的唯一前綴代碼,若在時間戳上沒有發(fā)生變化,則表示改用戶的請求Key是有效的:
//Redis代碼
SET “12345” timestamp // 設(shè)置時間戳
//JavaScript 代碼
var startTime = new Date();
var uid = '12345'
var randomStr = startTime.getTime() + uid; //生成隨機字符串
var result = redis.GET(uid); //取出根據(jù)用戶ID號設(shè)置的時間戳
if (startTime.getTime() === result ){
console.log('請求Key有效');
}else {
console.log('請求Key無效');
}
以上就是本文關(guān)于Redis實現(xiàn)隨機數(shù)鎖定設(shè)置的全部內(nèi)容了,希望能幫助到讀者可以更快捷的實現(xiàn)這一功能,節(jié)省開發(fā)成本。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機、虛擬主機、域名注冊、VPS主機、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
網(wǎng)頁名稱:Redis實現(xiàn)隨機數(shù)鎖定設(shè)置(redis鎖設(shè)置隨機數(shù))
分享鏈接:http://www.dlmjj.cn/article/cdehsod.html


咨詢
建站咨詢
