У меня есть социальная сеть
Таблица пользователей составляет около 60 000 строк
Таблица друзей составляет около 1 миллиона строк (используется для определения того, кто является вашим
друг)
Я хочу, чтобы вы делали друг корм, на стене, как бы вы его ни называли, он будет показывать такие вещи, как сообщение о статусе пользователя (сообщения типа Twitter), он отобразит несколько разных элементов, но для начала это будет просто статус друга и возможно, сообщение в блоге.
В основном вы увидите только контент, опубликованный с идентификатором пользователя, который находится в вашем списке друзей.
Я пытался придумать лучший способ и не очень далеко, но вот моя последняя идея.
В настоящее время для создания этого фида я должен
Получить список друзей ID на большой таблице друзей
Получите данные потока из идентификаторов друзей из приведенного выше результата
ПРИСОЕДИНИТЕСЬ к таблице пользователя, чтобы получить URL-адрес и имя пользователя издателя
Затем СОЕДИНЯЙТЕСЬ в таблицу комментариев, чтобы получать комментарии, размещенные в фидах
Это одна большая задача для создания этого фида
До сих пор у меня есть 3 идеи, вот где может помочь ваша помощь.
Вариант Memcache:
Кэш файла Опция:
Сделайте то же самое, что и параметр memcache, но сохраните эти данные как массив в кеш-файле вместо памяти, затем включите этот файл кэша на страницу.
Я не уверен, что является лучшим методом для производительности. Я понимаю, что memcache хранит все в памяти, поэтому друзья, у которых есть 20 000 друзей, которые могут использовать много памяти и кеш-файл, будут помещать их только в память, когда пользователям это нужно, если я верный. Также, если я сделал метод файла, когда пользователь выходит из сайта, я бы удалил туда файл кеша, поэтому папка с кешем никогда не будет слишком большой из файлов
Кэш сеанса:
Пожалуйста, дайте мне ваши мнения или любые советы или информацию, которые у вас есть по этому поводу, поскольку у меня нет большого количества знаний о кешировании, я много читал, но иногда идеи других народов очень помогают
Memcache – ваш лучший выбор по многим причинам:
… и многое другое;)
Что касается некоторых из ваших опасений относительно объема памяти отдельных кешированных предметов, у вас есть несколько вариантов. Моя первоначальная мысль состоит в том, чтобы просто дать ему завихрение, посмотреть, насколько сильно эти элементы кэша действительно получают (вы можете найти несколько вещей с открытым исходным кодом для мониторинга фактического использования кеша, например, кактусов). Думаю, они будут меньше, чем вы думаете.
Если это не так, я бы предложил пересмотреть свою стратегию кэша до того, что вы на самом деле кешируете, как долго и т. Д. Возможно, вы могли бы создать фид из нескольких вещей, уже находящихся в кеше (например, кешировать отдельные пользовательские данные, а затем создать фид для человека из всех этих отдельных элементов в кеше). На этом фронте есть много хороших статей, просто найдите их!
Максимальный размер объекта по умолчанию, допустимый в Memcache, равен 1 МБ.
@jsaondavis: «данные сеанса сохраняются в файл».
Ваше утверждение выше неверно. Сессия может быть настроена для хранения в базе данных. По умолчанию session hadndler – это файл.
Redis будет хорошим решением:
Вот поток на Redis Vs. Memcached. Похоже, что у Redis есть 512mb-хранилище вместо 1mb-предела … QUITE немного отличается 🙂
Memcached против Redis?