Redis實戰(zhàn)筆記-購物網(wǎng)站

會話維持

  1. 使用Token維護用戶登陸狀態(tài),作為用戶操作憑證补君。

  2. 更新Token
    hset login: token userId 將登陸的用戶Id和token用hash做映射
    zadd recent: timestamp token 將token放入到最近操作的有序集合中,以當前時間戳作為分數(shù)
    zadd viewed:Token timestamp ItemId 將最新訪問的商品Id加入到該用戶的最近訪問商品有序集合中
    zremrangebyrank viewed:Token 0 -26 刪除該用戶最近訪問的商品的比較老的記錄俩滥,保持只記錄25個歷史足跡
    zincrby viewd: item -1 將當前瀏覽的商品的分值減一,這樣訪問次數(shù)越多的商品的分值就會越小
    zremrangebyrank viewed: 0 -20001 定期將20000名以后(分值從大到小的后20000名)的商品刪除
    zinterstore viewed: 1 viewed: weights 0.5 將剩余商品的瀏覽次數(shù)減半

  3. 檢查Token
    hget login:token 根據(jù)token獲取登陸用戶画切,如果為空宜岛,說明未登陸或者登陸已過期

  4. 清理過期會話长踊,保持同時在線人數(shù),最多500w萍倡,下列操作可以創(chuàng)建為定時任務身弊,定時執(zhí)行
    zcard recent: 獲取當前在線人數(shù),判斷如果人數(shù)大于500w列敲,則清理長時間沒有更新token的用戶
    zrange recent: 0 100 獲取最久沒更新的token阱佛,100為 min(在線人數(shù)-500w, 100)
    del viewed:Token 循環(huán)刪除過期用戶的瀏覽歷史
    hdel login: Token 循環(huán)刪除過期用戶的token-user綁定
    zrem recent: token 循環(huán)刪除token

購物車

使用cookie做保存購物車的問題,每次http請求都會帶著cookie戴而,一旦購物車數(shù)量比較大凑术,那么請求和處理速度都會有影響。另外還需要解析cookie中的商品所意,判定其是否仍然有效淮逊。

hset cart:token item counts 將item加入購物車,數(shù)量為counts
hdel cart:token item 如果counts為0扶踊,則刪除購物車中的這個商品
del cart:token 在上邊清理會話中泄鹏,同時清理掉這個會話的購物車

通過將會話cookie和購物車cookie 放入到redis中,可以利用這些數(shù)據(jù)秧耗,進行商品的統(tǒng)計分析

頁面緩存

一般上备籽,很多商品頁面,一旦該商品創(chuàng)建后绣版,就幾乎不會再修改了胶台。通過【數(shù)據(jù)+模版】生成靜態(tài)頁面并緩存的方式,可以有效減少動態(tài)生成頁面的時間杂抽,大大提高訪問速度诈唬。

Laravel中,可以創(chuàng)建一個中間件缩麸,給可以緩存的路由加上這個中間件铸磅。在中間件中,將第一次動態(tài)生成的頁面存到redis中杭朱,并給這個緩存加上過期時間阅仔。下次請求先訪問緩存,緩存失效或不存在的情況下弧械,才再次動態(tài)生成八酒。

get cacheName 根據(jù)一定規(guī)則(可以是Url),獲取redis中緩存的結果刃唐,如果不存在羞迷,再去訪問數(shù)據(jù)庫界轩,并將結果存入redis
set cacheName cacheResult 將結果存入redis
expire cacheName 60 緩存1分鐘

秒殺

秒殺商品頁面和普通商品頁面最大的不同,就是秒殺商品有購買的時間和庫存的限制衔瓮。這兩個數(shù)據(jù)不能通過上一步中【頁面緩存】的方式顯示浊猾。
我們可以通過ajax請求的方式,動態(tài)獲取庫存和秒殺時間热鞍,這兩個數(shù)據(jù)可以放入到redis葫慎,避免短時間大量請求堵塞數(shù)據(jù)庫。

我們維護兩個有序集合來實現(xiàn)這個功能薇宠。

  • 一個有序集合key為要緩存的數(shù)據(jù)的id偷办,如商品id,分值為時間戳澄港,代表什么時候應當重新從數(shù)據(jù)庫將最新的數(shù)據(jù)加載數(shù)據(jù)到redis
  • 一個有序集合key也是要緩存的數(shù)據(jù)的id爽篷,分值為延時時間,代表每隔多久緩存一次慢睡。如果這個值小于0,則不應該繼續(xù)緩存這個數(shù)據(jù)铡溪,應當將其從redis刪除漂辐。
  1. 創(chuàng)建任務 id, delay
    zadd delay: delay id 延時列表,分值為緩存更新的間隔時間
    zadd schedule: timestamp id 任務列表棕硫,分值為下一次緩存更新的時間

  2. 定時任務髓涯,更新緩存
    zrange schedule: 0 0 withscores 從任務列表中獲取最新要更新的任務,如果這個任務的更新時間還沒有到哈扮,就sleep一段時間纬纪,從新檢查
    zscore delay: id 獲取這個任務的緩存更新間隔時間,如果這個間隔時間小于0滑肉,說明不需要再緩存這個數(shù)據(jù)包各,將這個數(shù)據(jù)從redis刪除
    zrem delay: id 刪除時間間隔
    zrem schedule: id 刪除任務調度
    del inv:id 刪除緩存的數(shù)據(jù)

    set inv:id 如果間隔時間大于0,就從數(shù)據(jù)庫查出最新的數(shù)據(jù)靶庙,放入redis中
    zadd schedule: timestamp+delay id 將這條數(shù)據(jù)的下次更新放入任務隊列问畅,分值為當前時間+延時的時間

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市六荒,隨后出現(xiàn)的幾起案子护姆,更是在濱河造成了極大的恐慌,老刑警劉巖掏击,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件卵皂,死亡現(xiàn)場離奇詭異,居然都是意外死亡砚亭,警方通過查閱死者的電腦和手機灯变,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門殴玛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人柒凉,你說我怎么就攤上這事族阅。” “怎么了膝捞?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵坦刀,是天一觀的道長。 經(jīng)常有香客問我蔬咬,道長鲤遥,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任林艘,我火速辦了婚禮盖奈,結果婚禮上,老公的妹妹穿的比我還像新娘狐援。我一直安慰自己钢坦,他們只是感情好,可當我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布啥酱。 她就那樣靜靜地躺著爹凹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪镶殷。 梳的紋絲不亂的頭發(fā)上禾酱,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天,我揣著相機與錄音绘趋,去河邊找鬼颤陶。 笑死,一個胖子當著我的面吹牛陷遮,可吹牛的內容都是我干的滓走。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼帽馋,長吁一口氣:“原來是場噩夢啊……” “哼闲坎!你這毒婦竟也來了?” 一聲冷哼從身側響起茬斧,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤腰懂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后项秉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绣溜,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年娄蔼,在試婚紗的時候發(fā)現(xiàn)自己被綠了怖喻。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片底哗。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖锚沸,靈堂內的尸體忽然破棺而出跋选,到底是詐尸還是另有隱情,我是刑警寧澤哗蜈,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布前标,位于F島的核電站,受9級特大地震影響距潘,放射性物質發(fā)生泄漏炼列。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一音比、第九天 我趴在偏房一處隱蔽的房頂上張望俭尖。 院中可真熱鬧,春花似錦洞翩、人聲如沸稽犁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缭付。三九已至,卻和暖如春循未,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背秫舌。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工的妖, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人足陨。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓嫂粟,卻偏偏與公主長得像,于是被迫代替她去往敵國和親墨缘。 傳聞我的和親對象是個殘疾皇子星虹,可洞房花燭夜當晚...
    茶點故事閱讀 45,440評論 2 359