北京赛车 pk10开奖记录_Toyou热购彩票官网
香港高速VIP雲機房火爆上線啦!無需備案臥峽侗,開通即用!配套《巔雲自助建站系統3.0》將帶給您飛一般的可視化拖拽建站體驗地,歡迎免費體驗幫。

項目中應用Redis+Php的場景

一佰互聯網站制作(www.yinxi.net) 發布日期 2019-04-27 10:44:11 瀏覽數: 109

前言

一些案例中有的同學說為什麼不可以用string類型時宛輔,string類型完全可以實現呀

我建議你看下我的專欄文章《Redis高級用法》,里面介紹了用hash類型的好處

商品維度計數

對商品喜歡數樸北,評論數幸琶,鑒定數讕,瀏覽數進行計數
說起電商顴,肯定離不開商品倡攜,而附帶商品有各種計數(喜歡數攫吼屑,評論數媚緩,鑒定數椽,瀏覽數,etc)
Redis的命令都是原子性的僻凹夕,你可以輕松地利用INCR寫,DECR等命令來計數 崇償。

采用Redis 的類型: Hash. 如果你對redis數據類型不太熟悉先,可以參考
http://redis.io/topics/data-types-intro

為product定義個key product:鞏泥村,為每種數值定義hashkey, 譬如喜歡數like_num

$redis->hSet("product:123", "like_num ", 5); // 添加 id為123的商品 like_num 為5
 
$redis->hIncrBy("product:123", "like_num ", 1); // 添加 id為123的商品like_num +1

$redis->hGetAll("product:123"); // 獲取id為123的商品相關信息
                  array("like_num "=> 1)

用戶維度計數

對用戶動態數岔、關注數繡、粉絲數龐受、喜歡商品數玖秋、發帖數等計數
用戶維度計數同商品維度計數都采用 Hash. 為User定義個key 為 user:
為每種數值定義hashkey, 譬如關注數follow

$redis->hSet("user:100000", "follow ", 5); // 添加uid為10000的用戶follow 為5
 
$redis->hIncrBy("user:100000", "follow ", 1); // 更新uid為10000的用戶follow +1

$redis->hGetAll("user:100000"); // 獲取uid為10000的用戶
                  array("like_num "=> 1)

                                
存儲社交關系

譬如將用艫暮糜粉絲/關注公恃踏,可以存在一個sorted set中妙矮究,score可以是timestamp
默認集合按照score遞增排序
這樣求兩個人的共同好友的操作銑,可能就只需要用求交集命令即可

$redis->zAdd("user:1000:follow", 1463557212, "1001"); 

                #uid為1000用戶關注uid為1001 , score值設定時間戳1463557212

$redis->zAdd("user:1000:follow", 1463557333, "1002"); 

$redis->zAdd("user:2000:follow", 1463577568, "1001"); 

$redis->zAdd("user:2000:follow", 1463896964, "1003");
 
                #uid為2000用戶關注1001和1003用戶 , score值設定時間戳

$redis->zInter("com_fllow:1000:2000", array("user:1000:follow", "user:2000:follow")); 

    #對集合"user:1000:follow"和"user:2000:follow"取交集"com_fllow:1000:2000"
    #獲得共同關注的uid 

$redis->zRange("com_fllow:1000:2000",0,-1); // 獲取全部集合元素
    #array("10001","10002")

用作緩存代替memcached

應用于商品列表財,評論列表藤鈕,@提示列表

相對memcached 簡單的key-value存儲來說紐手,redis眾多的數據結構(list,set,sorted set,hash,
etc)

可以更方便cache各種業務數據患酸舵,性能也不亞于memcached長。
NOTE: RPUSH pagewviews.user: EXPIRE pagewviews.user: 60 //注意要update timeout

反spam系統

應用系統評論揣、發布商品魔亂廊、論壇發貼的spam控制

作為一個電商網站被各種spam攻擊是少不免(垃圾評論了擎、發布垃圾商品趁府暇、廣告錨旦勞、刷自家商品排名等)

針對這些spam制定一系列anti-spam規則巴,其中有些規則可以利用redis做實時分析

譬如操赦釁︰1分鐘評論不得超過2次邯穢闖、5分鐘評論少于5次等(更多機制/規則需要結合drools )
常規sorted set將最近一天用戶操作記錄起來
(為什麼不全部記錄?節省memory構滑隆,全部操作會記錄到log轎,後續利用hadoop進行更全面分析統計)

#獲取5秒內操作記錄
$res = $redis->zRangeByScore("user:1000:comment", time() - 5, time());
#判斷5秒內不能評論
if (!$res) {
  $redis->zAdd("user:1000:comment", time(), "評論內容");
} else {
  echo "5秒之內不能評論";
}

#5秒內評論不得超過2次
if($redis->zRangeByScore("user:1000:comment",time()-5 ,time())==1)
echo "5秒之內不能評論2次";

#5秒內評論不得少于2次

if(count($redis->zRangeByScore("user:1000:comment",time()-5 ,time()))<2)
echo "5秒之內不能評論2次";


 

用戶Timeline/Feeds

應用于關注的人怯、主題麼、品牌及專欄

redis在這邊主要當作cache使用

$redis->zAdd("user:2000:feed:topic", time(), "13");
//score 為timestamp uid為2000的用戶關注tid為13的topic

$redis->expire("user:2000:feed:topic",24*60*60);
#關注有效期為24小時
# ttl 30天之內按秒數計算 30天之外以timestamp為準

最新列表&排行榜

用于記錄用戶剛剛喜歡的商品最新列表or排行榜 等業務場景

商品最新列表-sorted set結構呈現

    $redis->zAdd("user:1000:product:like", time(), "3002");
    $redis->zAdd("user:1000:product:like", time(), "3001");
    $redis->zAdd("user:1000:product:like", time(), "3004");
    $redis->zAdd("user:1000:product:like", time(), "3003");
    
    $redis->zRange("user:1000:product:like", 0, -1,true); 
    #默認喜歡時間升序序排列
    #
      Array(
        [3002] => 1463565179
        [3001] => 1463565189
        [3004] => 1463565199
        [3003] => 1463565209
      )
    
    $redis->zRevRange("user:1000:product:like", 0, -1,true); 
    #以喜歡時間降序排列
    #
      Array
      (
        [3003] => 1463565424
        [3004] => 1463565414
        [3001] => 1463565404
        [3002] => 1463565394
      )
    

排行榜-list數據結構呈現

    $redis->lPush("user:1000:product:like", "3002");
    $redis->lPush("user:1000:product:like", "3001");
    $redis->lPush("user:1000:product:like", "3004");
    $redis->lPush("user:1000:product:like", "3003");
    
    $redis->lRange("user:1000:product:like", 0, -1);
    
    Array
    (
      [0] => 3003
      [1] => 3004
      [2] => 3001
      [3] => 3002
    )

消息通知

采用Hash結構對消息通知業務場景計數

$redis->hSet("user:1000:message:notice", "system", 1);
#設置1條未讀系統消息

$redis->hIncrBy("user:1000:message:notice", "system", 1);
#未讀系統消息+1

$redis->hSet("user:1000:message:notice", "comment", 1);
#設置1條未讀評論

$redis->hIncrBy("user:1000:message:notice", "comment", 1);
#未讀評論+1

$redis->hGetAll("user:1000:message:notice");
#查看所有消息通知數量

Array
(
  [system] => 2
  [comment] => 2
)



將Redis用作消息隊列

采用Redis的List數據結構實現分布式的消息隊列

TAG標簽目拿︰ 項目中應用Redis+Php的場景  
一佰互聯是全國知名建站品牌服務商,我們有九年網站建設穩艙顴、網站制作屁痕、網頁設計繪喜內、php開發和域名注冊及虛擬主機服務經驗歸勉灰,提供的自助建站服務更是全國有名類敢構。近年來還整合團隊優勢自主開發了可視化多用戶”巔雲建站系統“3.0平台版臍蔥,拖拽排版網站制作設計剿線痰,輕松實現pc站碌鵲老、手機微網站井、小程序題豪騾、APP一體化全網營銷網站建設 祁訪覓,已成功的為全國上百家網絡公司提供自助建站平台搭建服務檬。

相關新聞more

26
08月
怎樣免費創建網站

一佰互聯推出免費自助建站平台陝紳,讓免費建站成為可能沉,讓中小型企業嘗試網站建設袒。怎樣創建一個免費網站呢?一般創建網站需要具備三個條件率︰空間難罷人、域名... >>詳情

12
05月
專業網站建設/專業網站設計的風格讓你與很多的

對于一個網站建設來說來啦嗚,網站建設的風格是網站建設的亮點縛思,在眾多網站中專業網站建設的風格也是獨具一格的弟鞘,而且它的風格是利用了很多的技巧臣跋,給人一種... >>詳情

14
05月
網站長尾關鍵詞如何做排名和優化_巔雲建站

做排名和?在SEO初期我們常常只做首頁的優化茶咀偽,可是每每忽略了關鍵詞的重要性遂綽,下面作者就來先容下長尾關鍵詞機關和優化的關鍵點地址嚇。 1.長尾關... >>詳情

26
04月
PHP + plupload.js實現多圖上

PHP + plupload.js JS插件實現多圖上傳並顯示進度條加刪除實例喚,廢話不多說豐弘,直接上代碼HTML代碼侍駁︰<!DOCTYPE... >>詳情

營業執照. cdn加速服務 備案系統認證 網絡安全協會 我們的支付方式AAA認證

7x24小時服務電話:18581389571 傳真:023-85725751 免費建站交流群敲坡粗︰236412099 139947842(自助建站交流) E-Mail:post@yinxi.net 網站投訴:
重慶楚捷科技有限公司 一佰互聯©版權所有 自助建站(www.yinxi.net,Inc.) 2001-2020 All Rights Reserved 本站程序受法律保護,網站法律顧問芭斑陋︰ITLAW-莊毅雄律師
中華人民共和國信息產業部網站備案號:渝ICP備12000592號
热购彩票 热购彩票 热购彩票