2015-11-24 6 views
0

У меня есть сценарий, где мне нужно синхронизировать мои данные MySQL в redis cache каждые 2 минуты.Удалите и вставьте данные в кеш Redis каждые 2 минуты

В основном у меня есть 2 таблицы категорий и статей. Каждая статья относится к определенной категории. Извлечение: мне нужно получить статьи определенного раздела, а иногда и ограничивать их.

Я видел 5 структур данных, доступных в Redis, но путаюсь, чтобы выбрать один из них, который будет соответствовать этим требованиям.

Каждые 2 минуты все данные должны быть удалены и вставлены.

Так что это лучший способ, которым я могу продолжать.

+0

Можете ли вы объяснить, почему вам это нужно, чтобы мы могли сделать соответствующий ответ? Ваши клиенты получают данные только от redis? это «сортировать» доступные данные? – khanou

+0

Можете ли вы объяснить «извлечения статей определенного раздела, а иногда и ограничение его», например, для определенной категории? – Rabea

+0

У меня есть категории и статьи. Данные хранятся в Amazon MySql RDS, и каждые 3 и 15 минут мы разбираем статей из rss и храним в db. Таким образом, rds постоянно занимается. Существует android, ios, мобильный сайт, который запрашивает статьи , поэтому вызовы Rest Api предназначены только для получения веб-сервисов node.js. У нас есть от 60 до 70 разделов, и в каждом разделе мы планируем разместить около 100 статей. Существует концепция пейджинга на мобильном сайте, поэтому мне нужно предоставить только 10 записей за раз, а для приложений - 20 статей за звонок из кэша. – Sharath

ответ

2

Одно из предложений, которые могут служить ваш сценарий должен иметь:

  • таблицы хеширования, чтобы содержать свои статьи и категории.

  • Сортировка Набор для работы в качестве индекса для последних статей для каждой категории.

Из сказанного выше мы будем:

  • Добавление объектов в хэш-таблицы внутри Redis для категорий и статей. это позволит вам извлечь выгоду из структуры данных с постоянной временной сложностью в среднем, как упомянуто here.

    HMSET article_with_id_{1234} field1 value1 .. etc

    HMSET category_with_id_{567} field1 value1 .. etc

  • Теперь вы будете нуждаться в структуру, чтобы соединить их вместе, Начните создавать упорядоченные наборы, как one category -> many articles, ниже приведен пример:

    ZADD category_{category_id} {Sorting Score - it could be the article_id in descending order or the timestamp as you mentioned} {article ID}

Теперь у вас должен быть индекс, на который вы можете ссылаться в АТЕГОРИЯ. поэтому данные по вытягиванию будут такими, как:

ZREVRANGE category_{category_id} 0 10 

Вытягивание отсортированного набора самых результативных 10 статей из этой категории. теперь это также поможет в разбивке на страницы.

Из идентификаторов статей собранных вами, вы можете вытащить подробную информацию о статьях из их хэша с HGET