Вопрос архитектурный: у нас есть кэш и основная БД. Сначала надо пойти в кэш, проверить есть ли там данные, если нет, то пойти в БД, и в итоге взять, оттуда где лежит. В плане организации логики кэш у нас является отдельной инфраструктурной деталью, либо же часть БД? То есть обращение к кэшу у нас должно быть скрыто за гейтвеем базы? Или же отдельно свой гейтвей?
Например:
post, err := controller.db.GetPostById(params.PostId)
if err != nil {
return result, errors.InternalError
}
И логика обращения к кэшу скрыта в методе
GetPostById
, либо же
post, err := controller.cache.GetPostById(params.PostId)
if err != nil || !post.Exists() {
post, err = controller.db.GetPostById(params.PostId)
if err != nil {
return result, errors.InternalError
}
}
Явно показываем в юзкейсе, что обращаемся к кэшу