在用戶有帖子的情況下,每個用戶都有一個代表新聞提要的視圖(非常類似於登錄的Tumblr帳戶),並且每個帖子概述都有一個鏈接到每個帖子的評論計數器,這裏最好的緩存策略是什麼(在Rails 4堆棧上)?用於個性化新聞Feed的Rails緩存技術
假設有5個用戶ABCDE,每個用戶都訂閱了他們右邊的2個用戶(A訂閱了B和C,B訂閱了C和D等),並且只有他們訂閱的用戶在他們的新聞饋送視圖中顯示。
編輯:
假設扇出上寫的方法是採取,其中每個用戶都有一個唯一的集(後IDS的)在Redis的,並且在一切post
創建,新帖子的ID被附加到每個帖子創建者的朋友集。 redis集充當索引,用戶的feed通過單個SQL查詢獲取。
考慮到這一點,緩存各飼料應該是這種方法的問題:
- 入住Redis的設置(先打)
- 寫
@feed_array
到memcached的 - 取得與單一SQL指揮所並保存到
@feed
- 寫
@feed
到memcached的 - 入住Redis的設置(第二擊)
- 如果設置值匹配
@feed_array
,則從memcached返回@feed
。否則,新的SQL查詢和memcached的
這種方法覆蓋@feed
通過@post
的div進行遍歷時,將意味着意見容易緩存的使用,但如何將一個處理意見計數?
即使採用了你建議的扇出式寫入方法,緩存方法仍然是必要的。如果用戶有一個來自Feed模型的'時間線',並且說@feed = Feed.where(等等),那麼供稿項div仍然需要緩存,問題在於評論計數器。如何處理這些? – railsuser400
順便說一句,我已經更新了這個問題。 – railsuser400
@ railsuser400我不認爲你有答案。這一切都取決於你的要求。對於響應式解決方案,甚至可能不涉及緩存。你可以IE瀏覽器加載的東西(評論計數或其他)通過JavaScript,或採取一個單一的頁面方法與JavaScript的MVC。 – phoet