Стратегия кеширования с использованием mongodb & redis - PullRequest
0 голосов
/ 23 января 2019

Я создал слой кэша Redis для моего приложения, использующего mongodb.Я обеспокоен тем, что кэширование становится недействительным, потому что команда update может отправлять в mongodb различными способами, такими как обновление по id, коду, имени и т. Д.

Как мы можем найти соответствующий кэшированный ресурс для соответствующего обновления?

Я уже пытался использовать функцию «Изменение потока» в mongodb для удаления кэша, но я получил снижение производительности из-за того, что mongodb открывает новое соединение для каждого потока изменений (предпочитают эту проблему )

Например:

  1. Я кеширую порядок {id: 1, код: 2, пользователь: 3} с id = 1 в redis
  2. Когда приложение обновляет все заказы с пользователем = 3, как мы можем узнать, чтобы обновить соответствующий заказ в redis

1 Ответ

0 голосов
/ 23 января 2019

1 / Либо сделайте это частью ваших операций CRUD, выполняемых через ваш код и драйвер mongodb, операции redis выполняются быстро и не будут сильно снижать производительность.Таким образом, вы можете сделать недействительными или изменить структуры redis всякий раз, когда выполняете операцию mongodb в своем коде.

2 / Если вы хотите сохранить независимость системы, я бы порекомендовал прослушивать изменения коллекции и документа через debezium , который опубликовал бы события изменения в теме Кафки.Потребитель темы kafka может прочитать события и соответственно изменить кэш.https://debezium.io/docs/connectors/mongodb/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...