Удалить и вставить данные в Redis Cache каждые 2 минуты

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

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

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

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

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

1 ответ

Решение

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

  • Хеш-таблицы для размещения ваших статей и категорий.

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

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

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

    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

Другие вопросы по тегам