Простая система оповещений пользователя о входящих уведомлениях. Есть булевое значение, в зависимости от значения которого будет выполняться/не выполняться запрос в основную БД по поиску входящий уведомлений. Кроме основной есть еще redis в которой живут сессии пользователя.  Поле is_notified есть и в таблице user основной БД и добавляется в сессию пользователя при авторизации. 
В проекте используется фреймворк fastAPI, создана middleware которая при каждом запросе будет чекать значение поля is_notified  , и если оно в True то идти в БД за сообщениями. Вопрос в какую БД ходить за актуальным статусом  правильнее в соответствии с желанием исходить из уменьшения запросов в основную БД но и не нарушать общепринятой архитектуры для таких случаев. 
1 вариант - хранение в сессиях
При авторизации пользователя в редисе создается сессия в виде 
{'session_id': 
  "session_data": {
    "user_id": 123,
    "is_notified": True,
      ...... 
  }
}
При получении пользователем новых уведомлений  is_notified присваивается true. Пользователь заходит на сайт, формируется сессия в которую подтягивается значение is_notified  и если оно true то идем в БД за сообщениями. 
Но тут проблема. если пользователь онлайн и ему придет уведомление, то нужно изменять значение  is_notified в сессии напрямую.  Т.е как то делать такую структуру в редисе где для пользователей которые онлайн содержащую матчинг айдишника пользователя и айдишника сессии. По айдишнику сессии вытягивать значение is_notified и менять его. 
Это вообще норальный подход?
2 вариант , храним только в основной БД
Тогда миддлваре при каждом запросе будет ходить в БД и чекать значение is_notified. Это лишний запрос в БД при каждом телодвижении пользователя. 
Наверняка есть еще варианты. Поделитесь опытом как правильно реализовать?