Я планирую использовать кэш Redis в своем приложении, и размер данных может варьироваться от 10 КБ до 500 МБ.Если я использую большие записи ключ / значение из Redis, данные Reding и Saving могут вызвать проблемы с производительностью, это означает, что мне придется передавать больше данных по сети с сервера на клиент, и у меня могут быть следующие последствия.
- Для передачи данных требуется больше времени, поэтому клиенту может потребоваться настроить более высокое значение тайм-аута, чтобы учесть это дополнительное время передачи.
- Запросы к серверу могут застрять за большимпересылать и вызывать тайм-аут других запросов.
- Сетевые буферы, используемые для передачи этих данных, могут повлиять на доступную память на клиенте или сервере, что может усугубить проблемы с доступной памятью, описанные при фрагментации.
- Если этик элементам большого ключа / значения часто обращаются, это увеличивает последствия, если мы многократно переносим эти данные снова и снова.
Поэтому я хотел бы выполнить разбиение в кэше Redis.
Пример: у меня есть конечная точка (GetEmployees (некоторые вычисления происходят сполучить всех сотрудников)), который возвращает около 500 записей размером 400 МБ (пример).Я получаю те же данные, пока не добавлю нового сотрудника, поэтому я хочу иметь механизм кэширования, чтобы я мог хранить эти записи и получать их из кэша вместо того, чтобы снова и снова выполнять вычисления.
Если я сохраняю все записив единственном осколке Redis, столкнутся с вышеупомянутыми проблемами.
Ключ / Значение: GetEmplyeesTodayDate / {Список записей}
Итак, я хотел бы разделить данные по осколкам и получитьвсе записи при чтении из Redis.
Каков наилучший способ сохранить все 500 записей в Redis с одинаковыми или несколькими ключами и извлечь их?