Re: [請益]如何設計 facebook , g+ 按讚或者+1的功能
※ 引述《tao2tw (smile_ting)》之銘言:
: 有個問題想與各位前輩討論,
: 我們都知道 facebook 有 按"讚"的功能。
: 如果把一篇文章當做一個 table 中的item 。
: 姑且稱之 Post item .
: 該Post item 可能包含許多欄位
: owner_id , content , date , ...
: 那麼如果要實作按讚功能,
: 就需要新增一筆 like 欄位 到 Post Table
: 如果有user C 針對該篇文章 "按讚"
: 該 Post item 的 like 欄位 , 就會被 update , 並且增加 點讚人的user_id ?
: 比如說原本該POST 按讚人數 已經有兩人 "A,B"
: 則ABC按下去之後 先讀取 users = "A,B"
: 接下來 users+=","+current_user_id
: 將 "A,B,C" 回存
: 感覺上似乎有一點沒效率。
: 但是直覺上的想法大概就是這樣,不曉得前輩是否有更聰明的想法?
: --
: ※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 119.77.136.156
: → FMDream:我會選擇在開一個表 post_item uesr_id is_like 03/24 14:56
: → kerash:這樣設計會變成只要有一個人按讚其他人都會跟著變讚或者 03/24 14:57
: → kerash:別人按讚自己的紀錄會被 update 掉吧 03/24 14:58
: → hSATAC:再開個表 原本表只記按讚數 03/24 15:04
: ※ 編輯: tao2tw 來自: 119.77.136.156 (03/24 15:22)
: 推 kerash:我會用一樓的作法 03/24 15:32
剛好哄完小孩睡覺來回一下文…
我們公司的產品正好有類似的功能(叫做「棒」 XDD),
可以提一下我們是怎麼做的,
首先聲明我的資料庫頗弱,所以方式不一定是最好,
希望有其他前輩願意出來指點一二
(其實這篇好像應該算是 Database 的範圍?)
我們家的作法和推文的大大們所說的差不多,
一共有兩個表,post / post_like (加上 reply / reply_liek 就是四個表了),
post 純記 like 數量,
post_like 塞 post_id + member_id,
所以每次按讚就是:
1. 去查 post_like 的紀錄,這個 user 有沒有讚過這篇文章
2. 沒有讚過,post_like 新增一筆
3. 新增成功的話,post 的 like += 1
展開版面上的文章時:
1. 取出可以被瀏覽的 post
2. 拿所有 post id + user id 去 post_like 拉 like 紀錄
3. 穿插「棒」、「你說這真棒」、「你和 xx 人說這棒」之類的進文章尾
這樣解應該是很基本的方式,
另外有個好處是 post_like 這張表根本就是 key-value pair,
很適合直接用 memcache 或 redis 直接從記憶體作掉(拉和塞都是)
然後定時 crontab 更新 post_like 就好
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.175.40.79
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):
PHP 近期熱門文章
PTT數位生活區 即時熱門文章