2013-08-20 2 views
1

Если я хочу создать RSS-ридер, то вставка всех каналов в MySQL будет слишком тяжелой для сервера БД, интенсивность процессора.Чтобы создать RSS-Reader

Так будет ли Redis или cassandra, сервер MySQL с помощью Apache в уменьшении нагрузки на сервер mysql?

+0

redis - это не волшебная пуля, вы знаете. –

+0

@SergioTulentsev Я знаю, redis придет, чтобы нажать/вытащить фиды, а не делать db. – X10nD

+0

Современные базы данных быстрее, чем вы думаете. –

ответ

2

Короткий ответ: Да, но это добавит сложности.

Длинный ответ: если MySQL недостаточно для вас (и я сначала проверил бы, что это, по сути, случай, прежде чем добавить сложность Redis), вы можете бросить некоторые из более частых обновлений/вставки загрузить на Redis. Несколько способов сделать это (вы не должны делать все, что здесь, но каждая вещь поможет с нагрузкой):

  1. Есть Redis паб/суб-канал для каждого пользователя. Публикуйте его непосредственно, когда что-то добавляется в фид пользователя. Попросите клиента RSS подписаться на этот канал, поэтому, если у пользователя открыт его читатель RSS, он должен просто подписаться на свой паб/дополнительный канал для обновлений и никогда не читать из MySQL.

  2. Пакетная вставки в MySQL: Если у вас есть большой объем записи, не выдержав сетевой трафик и запирание/отпирание и накладных расходов запроса вставки в MySQL каждый раз, когда что-то новое должно быть добавлено к корму. Вместо этого сохраните все новые элементы в кэше для каждого пользователя. Затем очистите кеш и сделайте массовую запись каждые n секунд. Установите n настолько, насколько это необходимо для вашего прецедента.

  3. Cache каналы для каждого пользователя: Если объем чтения очень высок, несмотря на # 1, кэш в Redis последних п элементы на пользователь за м секунд (набор п и м, как и подобает ваш прецедент). Лучший способ кэшировать их, скорее всего, как строку. Используйте список, если по какой-то причине вам нужен более динамичный доступ. Затем пользователи должны читать MySQL, только если их кеш недоступен.

Смежные вопросы