은 사용자가 10 게시물 DB에서 가져와 표시되는 사이트를 들어갈 때 나는 두 테이블사용자의 즐겨 찾기와 Memcached가
posts
- post_id
- image
favorites
- fav_id
- post_id
- user_id
이 있다고 할 수 있습니다. 지금 내가하고있는 일은이 테이블을 함께 결합하고 결과를 반복하는 것입니다. 사용자가 뭔가를 즐겨 사용했는지 여부를 확인할 수 있습니다. 이 같은
뭔가 :
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를과 결과를 캐시하려면 다음 캐싱이 작동하지 않기 때문에 쿼리는 각 사용자마다 다를 수 없습니다. 모든 사용자가 동일한 캐시 항목의 게시물을로드하도록합니다.
내 첫 번째 생각은 로그인 할 때 모든 사용자 즐겨 찾기를 가져 와서 캐시에 저장하고 사이트의 게시물을 탐색 할 때 사용할 수 있다는 것입니다. 내 친구는 사용자가 즐겨 찾기를 많이 사용하고 동시에 많은 사용자가 로그인했을 때 이것이 무거울 수 있다고 제안했습니다.
나는 어떻게 접근해야할지 모르겠다. 너희들은 어떻게 생각하니? 이 서버의 부하에 대해 잘되어야하므로
감사
지금 사용하고있는 실제 쿼리는 더 복잡하며 몇 가지 다른 테이블을 조인합니다. 나는이 문제에 관해서는 깨끗하게하고 싶었지만 그것을 언급해야만했다. 즐겨 찾기 캐시 항목을 해당 사용자의 고유 키와 함께 삭제한다고 생각했습니다. 그래서 내가 즐겨 찾기에 항목을 추가하면 캐시를 삭제하고 다음 번에 페이지를로드 한 다음 새 항목을 다시 작성합니다. 포함된다. – Ivar