@NioTrest

Можно ли в Redis хранить такие данные?

В laravel приложении я хочу показать пользователю информацию о том, кто в текущий момент просматривает определенную страницу.

В Redis для этого собираюсб сохранять информацию в таком формате:

{'/item/35': {1: last_visit_time_in_seconds}}

Если еще два пользователя зайдут на страницу /item/35, то в Redis будет

{'/item/35': {1: seconds}, {12: seconds}, {2425: seconds}}


Пользователи с id 1, 12 и 2425 находятся на этой странице. Если для пользователя один {1: seconds} нет обновлений в течение 30 секунд, тогда информация о нем должна быть удалена из кеша, но при этом запись про других пользователей должна остаться. Frontend периодически шлет запросы на бэкенд, чтобы поддерживать состояние кеша.

Возможно ли сделать такое в Redis? Может есть другой способ сохранить такого рода информацию в кеше?
  • Вопрос задан
  • 362 просмотра
Решения вопроса 1
@zzzevaka
Можно сделать так:

При открытии пользователем страницы, создать в redis запись c необходимым вам TTL c помощью SETEX.
Ключ примерно такой: opened:item_35:user_id. Значение не важно.

Чтобы узнать пользователей на этой странице, делаете запрос keys opened:item_35:* и распарсиваете user_id из полученных ключей.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы