Инвалидация кеша в Redis для кэширования на стороне клиента [особый случай]
Service1 -> Our Wrapper API service -> Redis
Service2 -> Our Wrapper API service -> Redis
Кэширование на стороне клиента с помощью Redis очень полезно. Redis обеспечивает недействительность кеша на стороне сервера для кеша на стороне клиента в двух режимах:
- Режим по умолчанию: Redis сохраняет сопоставление всех клиентов (сервисов) и запрошенного ими ключа на стороне сервера и отправляет запросы на аннулирование при изменении данных для ключей.
- Широковещательный режим: отправляет аннулирование всем клиентам при изменении любого ключа и ожидает, что клиенты обновят свой локальный кеш.
Проблема
У нас есть вариант использования, в котором мы создаем сервис платформы на основе Redis для некоторых вариантов использования и предоставляем API для использования клиентами. Мы хотим, чтобы клиенты не общались напрямую с Redis, а общались через наш API.
- Проблема здесь в том, как будет работать аннулирование кэша на основе push-уведомлений сервера Redis?
- Как запросы на аннулирование кеша будут достигать клиентов (сервисов), когда у нас есть промежуточный слой API. Мы не хотим, чтобы клиенты напрямую общались с Redis и общались только через API, не хотим передавать базу данных клиентам, хотим оставить ее внутренней.
Вопрос
Нужно ли мне тогда реализовывать свой собственный уровень инвалидации кэша на основе push? Поддерживать клиентов, которые подключаются к моему API и собирать мусор мертвых и т. д.? Есть ли что-нибудь лучшее, что я мог бы сделать и использовать аннулирование кеша Redis или расширить его для этого варианта использования?
1 ответ
Либо клиент Redis перемещается в эти службы-оболочки (становясь фактическими клиентами Redis), либо перемещает службы-оболочки в Redis в качестве расширения, к которому подключаются клиенты, либо перемещает оболочки в потребителей, а оболочки обертывают клиента Redis (тем самым продолжая пользоваться преимуществами клиента Redis)