2つのテーブルがあるとしましょう
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を使用して結果をキャッシュしたいのですが、キャッシュが機能しないため、ユーザーごとにクエリを変えることはできません。すべてのユーザーが同じキャッシュ エントリから投稿を読み込めるようにします。
私が最初に考えたのは、ユーザーがログインしたときにすべてのユーザーのお気に入りを取得してキャッシュに保存し、サイトの投稿を閲覧するときにそれを使用できるということでした。私の友人は、ユーザーが多くのお気に入りを持ち、多くのユーザーが同時にログインしている場合、これが重くなる可能性があると示唆しました。
これにどうアプローチしたらいいのかわからないのですが、皆さんはどう思いますか?
ありがとう