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

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


咨詢
建站咨詢
