Redis хранение подписок на категории новостей

Хочу хранить подписки пользователей на разделы сайта (категории новостей) в отдельном множестве, точнее двух:
первое множество 1 user_id => array( cat_id ) - для того, чтобы знать все подписки пользователя
второе множество 1 cat_id => array( user_id ) - для того, чтобы знать всех подписанных пользователей на категорию

Правильное ли это решение?

Второй вопрос вытекающий из первого:
Необходимо пользователю показывать количество обновлений с момента его просмотра этой категории, т.е. показать ему +3 новые новости с момента его отсутствия. Только тут не могу решить задачу, и понять как ее решить. В случае с комментариями к новости, там можно сравнивать по дате (пользователь подписался на новость/статью/вопрос и мы запомнили дату его последнего просмотра, потом когда написали новые комментарии, просто сравнили сколько добавилось новых комментариев с момента его просмотра, и когда пользователь зайдет в статью, то обновляем дату и все комментарии становятся прочитанными - тут все просто).

Но как это сделать с постами, я не понимаю. Опишу суть непонимания:

В раздел добавили +5 новых статей, напротив категории можно указать +5. Но вот пользователь зашел в категорию и у него в ней 5 статей помечены как новые, он посмотрел одну, должно быть теперь +4, потом еще одну и ему показывает +3, и т.д. тут одним обновлением даты, как с комментариями, не пройдет. Тут видимо необходимо хранить ид всех новых статей в отдельном множестве для пользователя.
Подскажите, пожалуйста, как решить этот вопрос?
  • Вопрос задан
  • 3009 просмотров
Пригласить эксперта
Ответы на вопрос 2
alekciy
@alekciy
Вёбных дел мастер
Правильное ли это решение?

Как сферическая задача в вакууме нет, не правильное, т.к. данные дублируются два раза. Потенциально в схеме заложена неконсистентноость данных (например, в первом множестве есть определенная cat_id, в самом множестве cat_id такого user_id). На практике бывает по разному.

Как я уже говорил в теме "Как устроен трекер на Хабре" смысл абсолютно тот же. Только в роле поста у нас идет лента новостей (а в роде комментариев

Но вот пользователь зашел в категорию и у него в ней 5 статей помечены как новые, он посмотрел одну, должно быть теперь +4

Нет, должно быть 0. +4 означало бы, что пользователь должен смотреть все посты чего понятное дело не требуется.
Ответ написан
alekciy
@alekciy
Вёбных дел мастер
И да. Не нужно смешивать алгоритм решения задачи, и реализация данного алгоритма. Поскольку имеем проблему с алгоритмом, то решать задачу реализации еще рано и рассуждать о Redis нет смысла. Более того, я не вижу смысла делать это на уровне Redis когда есть РСУБД в рамки которых это все прекрасно ложиться.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
25 апр. 2024, в 09:29
2500 руб./за проект
25 апр. 2024, в 09:27
4000 руб./за проект
25 апр. 2024, в 09:20
10000 руб./за проект