新聞中心
想

創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),輝南企業(yè)網(wǎng)站建設(shè),輝南品牌網(wǎng)站建設(shè),網(wǎng)站定制,輝南網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,輝南網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
拼單(Groupbuy)是一種新型的消費服務(wù),是多位用戶共同購買一件商品,以獲得更優(yōu)惠的折扣價格的一種消費模式,有的團購會有數(shù)量單位,只有當達到了指定數(shù)量,團購才開證。
因此,拼單助力中必不可少的就是實時計算拼單進度(schedule),以及明確當前是否可以獲得優(yōu)惠。除此之外,如果只用傳統(tǒng)的計算機技術(shù),計算拼單進度時還會面臨一些性能問題:如數(shù)據(jù)量大時,訪問會比較慢,數(shù)據(jù)實時性也會有影響。
為了解決上述問題,我們引入了Redis作為拼單助力的技術(shù)基礎(chǔ)。Redis是一款開源的、基于內(nèi)存的數(shù)據(jù)存儲,非常適合解決事務(wù)性讀寫訪問,特別適合解決實時計算進度、獲取優(yōu)惠的應(yīng)用場景。
借助Redis,可以將拼單用戶信息都存儲在Redis中,享受Redis自身卓越的性能優(yōu)勢,實現(xiàn)實時計算進行情況,可以大大減少用戶的等待時間,極大提升了客戶的體驗。
下面,我們就實現(xiàn)一個簡單的拼單請求處理助力,借助Redis實現(xiàn):
// Redis連接
const redis = require(‘redis’);
const client = redis.createClient(6379, ‘127.0.0.1’);
// 拼單數(shù)據(jù)庫
const groupOrderKey = ‘GROUP_ORDER’;
// 團購活動
// TODO: 根據(jù)實際情況修改
const groupParams = {
targetNumber: 5, // 目標數(shù)量
rewardPrice: 100, // 優(yōu)惠價格
expireTime: 30 // 拼單有效期(分鐘)
}
function handleGroupOrder(userId, callback) {
let now = new Date().getTime(); // 當前時間(毫秒)
// 1. 統(tǒng)計當前拼單人數(shù)
client.hLen(groupOrderKey, (ERR, len) => {
if (err) return callback(err);
// 2. 非主動發(fā)起人
if (len > 0) {
// 檢查是否超出有效期
let expire;
client.hget(groupOrderKey, ‘expire’, (err, expireStr) => {
expire = parseInt(expireStr); // 有效期(毫秒)
if (err) return callback(err);
if (now > expire) {
// 已超出有效期
client.hclear(groupOrderKey, (err, result) => {
if (err) return callback(err);
// 清空數(shù)據(jù),重新計數(shù)
addUserToGroupOrder(now, userId, len, callback);
});
} else {
// 未超出有效期
if (parseInt(len) >= groupParams.targetNumber) {
// 已達到拼單目標數(shù)量
client.hset(groupOrderKey, ‘price’, groupParams.rewardPrice);
// 填充優(yōu)惠價
client.hset(groupOrderKey, ‘expire’, now + groupParams.expireTime * 60000);
// 更新有效期
addUserToGroupOrder(now, userId, len, callback);
} else {
// 未達到拼單目標數(shù)量
addUserToGroupOrder(now, userId, len, callback);
}
}
});
} else {
// 主動發(fā)起人
addUserToGroupOrder(now, userId, len, callback);
}
});
}
// 添加用戶至拼單
function addUserToGroupOrder(now, userId, len, callback) {
client.hset(groupOrderKey, userId, now);
// 填充用戶信息
if (parseInt(len) === 0) {
// 主動發(fā)起人
client.hset(groupOrderKey, ‘expire’, now + groupParams.expireTime * 60000);
// 填充有效期
}
let newLen = len + 1;
client.hset(groupOrderKey, ‘len’, newLen);
// 更新計數(shù)
callback(null, newLen);
}
handleGroupOrder(‘uid12345’, (err, info) => {
if (err) {
// 異常處理
} else {
console.log(‘增加新用戶,當前拼單進度:’, info);
}
})
如此一來,利用Redis有效的實現(xiàn)了拼單助力的計算及更新,極大的提高了實時的響應(yīng)速度。但在實際的開發(fā)中,我們還需要考慮到Redis機器的負載情況,以及緩存的時效性等等因素,以達到最佳的體驗效果。
香港服務(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ù)器等。
當前標題:拼單助力Redis技術(shù)實現(xiàn)團購夢(拼單redis)
當前URL:http://www.dlmjj.cn/article/ccodeee.html


咨詢
建站咨詢
