Могу ли я кэшировать несколько таблиц в одном кэше или мне нужно поддерживать отдельные кэши для каждой? - PullRequest
0 голосов
/ 24 октября 2018

Я настраиваю кеш с помощью Guava, но мне нужно кешировать несколько таблиц.В предыдущем проекте мне удавалось кэшировать несколько таблиц, поскольку объект JSON был вложенным объектом - JSON одной таблицы был вложен в JSON другой.В этом случае код настроен так, что вложение не происходит, поэтому я не могу просто кэшировать один объект JSON, который содержит все остальные.Поэтому я хотел бы знать, могу ли я настроить Guava Cache для хранения содержимого нескольких таблиц в одном кэше или мне нужно настроить несколько кэшей.Я еще ничего не нашел об одном общем кеше, и я обеспокоен потенциальным ударом по производительности, который может вызвать несколько кешей.

1 Ответ

0 голосов
/ 26 октября 2018

Поэтому я хотел бы знать, могу ли я настроить Guava Cache для хранения содержимого нескольких таблиц в одном кэше или мне нужно настроить несколько кэшей.

С любым кешем вы можете делать и то, и другое.Для общего кеша вам нужно составной ключ, например:

class TableIdTuple {
  String tableName;
  int id;
  TableIdTuple(String tableName, int id) { ... }
  boolean equals(...) { ... }
  int hashCode() { ... }
}

Затем вы можете получить доступ к кешу с помощью:

cache.get(new TableIdTuple(tableName, id));

Использование выделенного кеша для таблицы обычно быстрее, а объект сейфовраспределение.Однако, если у вас много таблиц, вы получите множество кэшей для настройки и мониторинга.Поэтому для упрощения операций лучше использовать общий кэш.

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