假设我有两张桌子
posts
- post_id
- image
favorites
- fav_id
- post_id
- user_id
当用户进入站点时,从数据库中获取 10 个帖子并显示。我现在正在做的是将这些表连接在一起并循环遍历结果,在那里我可以检查用户是否喜欢某些东西。
像这样的东西:
SELECT p.*, f.fav_id
FROM posts p
LEFT JOIN favorites f
ON p.post_id = f.post_id AND user_id = $user_id
LIMIT 10
这很好,除了现在我想用memcached缓存结果并且每个用户的查询不能不同,因为这样缓存就不起作用了。我希望所有用户都从同一个缓存条目加载帖子。
我的第一个想法是,我可以在他登录时获取所有用户的收藏夹并将它们保存到缓存中,并在他浏览网站上的帖子时使用它。我的朋友建议,当用户有许多收藏夹并且许多用户同时登录时,这可能会变得很重。
我不知道如何处理这个问题,你们怎么看?
谢谢