訂單一定時(shí)間未支付,商品庫(kù)存自動(dòng)回庫(kù) redis實(shí)現(xiàn)方案

背景:

做商品支付的開發(fā)過(guò)程中,一個(gè)必須考慮到的環(huán)節(jié):用戶在點(diǎn)擊下單購(gòu)買,同時(shí)也點(diǎn)擊了支付,這時(shí)候由于各種原因,用戶長(zhǎng)時(shí)間未支付,對(duì)于庫(kù)存有限的商品來(lái)說(shuō),一般會(huì)將當(dāng)前訂單的商品庫(kù)存鎖定一段時(shí)間,這段時(shí)間一過(guò),還未支付,庫(kù)存自動(dòng)回庫(kù),同時(shí)修改支付狀態(tài),可以參照下12306的買票過(guò)程,對(duì)于這樣一種需求,我們有什么開發(fā)成本低的方案呢?

方案:

如果你的后端是java開發(fā)的,那搞個(gè)schedule定時(shí)任務(wù)到時(shí)間了去查一下是否支付成功,如果沒(méi)有支付,回庫(kù),改狀態(tài),也比較簡(jiǎn)單。

如果后端是php開發(fā)的呢,php搞不了多線程啊,只能linux開crontab 任務(wù)了,寫個(gè)php腳本,定時(shí)掃訂單吧。

今天提供的一種思路是利用redis的過(guò)期機(jī)制,以及過(guò)期回調(diào)來(lái)實(shí)現(xiàn)這個(gè)功能,對(duì)redis底層的操作封裝,java,php都有支持

已下以php為例簡(jiǎn)要介紹實(shí)現(xiàn)方法

redis的過(guò)期回調(diào)這個(gè)功能很關(guān)鍵,需要在redis.conf中開啟配置

notify-keyspace-events "Ex"

php擴(kuò)展redis.php已經(jīng)封裝好了回調(diào)方法

public function psubscribe( $patterns, $callback ) {}

調(diào)用:

$redis_xx->psubscribe(array('__keyevent@0__:expired'), 'psCallback');

function psCallback($redis_xx, $pattern, $chan, $msg){

? ? $msg 為你設(shè)置的key,可以傳訂單ID過(guò)來(lái),回調(diào)的時(shí)候用訂單ID去查詢付款狀態(tài),同時(shí)判斷是否需要庫(kù)存回庫(kù)

這個(gè)回調(diào)監(jiān)聽(tīng)的腳本需要一直運(yùn)行在后端的,否則redis的key過(guò)期后是無(wú)法通知到的,也就無(wú)法調(diào)用你的回調(diào)方法,我們可以用linux提供的命令 nohup xxx.php & 當(dāng)前腳本回轉(zhuǎn)到后端以進(jìn)程方式運(yùn)行,同時(shí)回生成一個(gè)叫nohup.out的文件用來(lái)記錄日志,至此我們的方案介紹完畢

最近上架了款微信小游戲,歡迎大家來(lái)體驗(yàn),多多提意見(jiàn),微信掃一掃下面小程序碼即可體驗(yàn)


堅(jiān)持住加油
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 關(guān)于微信支付 生活中的微信支付 目前我們?nèi)粘I钪薪佑|得比較多的線上電子支付方式主要有兩種,一種是支付寶,另一種就...
    積_漸閱讀 4,009評(píng)論 3 26
  • 1 Redis介紹1.1 什么是NoSql為了解決高并發(fā)、高可擴(kuò)展、高可用、大數(shù)據(jù)存儲(chǔ)問(wèn)題而產(chǎn)生的數(shù)據(jù)庫(kù)解決方...
    克魯?shù)吕?/span>閱讀 5,700評(píng)論 0 36
  • 所愛(ài)隔山海 山海不可平 所以翻山越嶺 漂洋過(guò)海 只求一絲溫存 只求不負(fù)一片情深
    我心如猛虎閱讀 219評(píng)論 0 1
  • 今天早上五點(diǎn)半鬧鈴準(zhǔn)時(shí)響起,原本想把昨天沒(méi)有看完的那本書看完的,可是沒(méi)有看幾頁(yè)就拿起手機(jī)刷了起來(lái)。 最后的結(jié)果就是...
    李蘇珊閱讀 329評(píng)論 0 0
  • INCLUDE 計(jì)算中,你需要固定在一個(gè)這樣的層級(jí),(注意,總是與Viz的屬兔做對(duì)比) 比Viz的維度更少的聚合,...
    ccvscc閱讀 3,060評(píng)論 0 1

友情鏈接更多精彩內(nèi)容