Как я могу структурировать следующую коллекцию mongo в кеш redis?

#spring-boot #redis #lua #spring-data-redis #redisson

#весенняя загрузка #redis #lua #spring-data-redis #редиссон

Вопрос:

Я использую шаблон redis и Jedis:

Допустим, у меня есть следующий образец документа коллекции mongo:

 _id:
5fd9e0568564939bc4fb947c
field1: "value"
field2: "value"
field3: "value"
field4: "value"
field5: "value"
field6: "value"
field7: "value"
field8: "value"
field9: "value"
field10: "value"
 

Размер коллекции составляет всего 3 МБ, поэтому я могу сохранить всю коллекцию в кэше redis даже с избыточностью. У меня есть API, который извлекает документы на основе разных наборов ключей. Пример [(field1, field2), (field1, field3)) и т.д. Как вы можете эффективно сохранять данные в кэше redis для целей этого API? Я знаю, что могу придумать все возможные комбинации запросов и прикрепить все документы, связанные с каждой комбинацией, но это приведет к тому, что кэш redis будет слишком большим. Это возможно, если я реализую механизм каталогов книг, в котором я просто сохраняю каждый документ только один раз в кэше redis и прикрепляю к нему ссылку. Проблема в том, что мне пришлось бы сделать два вызова redis, один для получения индексов / loukps указанной конфигурации ввода, а другой для фактического получения объектов. MongoDB в этом случае будет быстрее, чем отправка двух запросов в redis, я думаю (здесь не уверен, так как все хэш-операции выполняются в O (1). Может быть, сохранить каталог книг в памяти?). Каков наилучший способ сделать это?

Давайте сначала попробуем посмотреть, есть ли эффективный способ сделать это, используя только jedis, иначе мы продолжим изучать lua и redisson.

обновление: я читал о хранилищах данных spring и о том, как я могу добиться поведения запросов к БД, используя его. Будет ли она эффективно хранить мои объекты в Redis?

Комментарии:

1. Разве вы не можете сохранить все это как простую пару ключ: значение? Когда вы получаете запрос, скажем [(field1, field2)], получите значение ключа ‘field1’, затем получите значение ключа ‘field2’ и затем извлеките документ. Или это то, что вы имели в виду, когда говорили, что не хотите запрашивать redis 2 раза?

2. То, что я пытаюсь здесь сделать, — это сохранить всю коллекцию из mongo в Redis таким образом, чтобы ее можно было легко извлечь с помощью API.