Решение построить систему очередей типа «чтение сообщений» в Redis? - PullRequest
0 голосов
/ 11 октября 2011

Я не совсем уверен, что Redis - лучший инструмент для чего-то подобного, однако я думаю, что это возможно. Много раз есть сообщение, которое вы хотите отправить всем своим пользователям. Почти как общесистемная запись новостей. Вы хотите убедиться, что пользователь не видит это сообщение более одного раза, он должен видеть его только один раз при входе в систему, и после этого он никогда не должен видеть этот раздел новостей, пока не будет опубликована новая запись.

Я думаю, что в MySQL хранится таблица, которая устанавливает логический столбец каждый раз, когда пользователь читает сообщение, как неэффективный способ сделать это. Вы действительно не можете заархивировать такую ​​таблицу, потому что если вы это сделаете, вы не будете знать, какие сообщения прочитал пользователь, а какие нет.

Было бы здорово, если бы это можно было сделать полностью в памяти, используя Redis pub / sub. Какие существуют стратегии для системы чтения сообщений?

1 Ответ

0 голосов
/ 11 октября 2011

Конечно, вы можете использовать возможности redis pub / sub и, возможно, использовать socket.io для кометы - сервер отправляет сообщения клиенту.Если это то, что вы хотите сделать, я могу подробнее рассказать об этом, но я не совсем уверен, должна ли система быть настолько сложной для вашего варианта использования.Реализация всего этого от внешнего интерфейса до внутреннего с помощью pubsub / comet - задача не из легких, хотя выполнимая, а иногда и необходимая / правильное решение проблемы.

Как насчет более простого подхода, который также может сработать и для вас:

Создайте таблицу news с полем creation_date datetime.Добавьте поле last_seen_news_date в таблицу user, установите для всех пользователей определенную дату в прошлом.

Когда пользователь загружает страницу, запрашивайте новостные элементы следующим образом:

select * from news where creation_date > last_seen_news_date_of_user

Затем обновите last_seen_news_date, указав текущую дату или время самой последней новостной статьи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...