мы хотели бы добавить кэш Redis для улучшения времени отклика
У нас есть веб-сайт MVC, где пользователь может настроить свою конфигурацию. после этого система генерирует общедоступный URL-адрес, по которому другие могут получить доступ к тому, что наш клиент настроил с помощью WebApi.
некоторые из этих общедоступных ссылок будут использоваться в течение 2-3 раз, в то время как другие будут использоваться все время.
чтобы сохранить вызов БД, мы хотим использовать redis в качестве нашего кэша. Я видел несколько примеров кода, когда первый вызов был переадресован и если объект не находится в кеше, он отправляется в БД.
это публичный API, то есть кто-то где-то попытается отсканировать этот API. Как я могу защитить API от неоднократного вызова в БД для элементов, которые не находятся в кеше?
допустим, URL-адрес API выглядит следующим образом: https://api.example.com/getinfo/1 кто-то создаст http-вызов https://api.example.com/getinfo/2 https://api.example.com/getinfo/3 и т. д., что API-вызовы не находятся в кэше (или даже существуют) ) и запрос к БД. так что, если я выполню тысячи вызовов API, каждый запрос будет запрашивать БД?
До этого момента мы использовали кэш памяти, который обновлялся каждые 15 минут. если запрос не находится в кеше, то нет вызова БД. но это не масштабируется
всякий раз, когда наш пользователь обновляет свой веб-интерфейс новыми данными, мы также должны обновлять кэш redis? мы должны использовать EF-сущности или лучше создавать собственные сущности для каждой сущности, которую мы храним на redis?
3. при работе с мультитенантом нам лучше предоставлять кэш redis для каждого арендатора или около того кэш логический по ключу?