Когда использовать Ehcache и Hash map для кэширования данных? - PullRequest
0 голосов
/ 11 октября 2018

У меня есть класс, в котором определен метод main.Когда я запускаю этот класс, он загружает данные учетных записей из таблицы учетных записей и заполняет глобальную переменную в моем основном классе.Теперь требование в моем проекте: можно обновить таблицу счетов на лету.Для этого я подписываюсь на последнюю обновленную метку времени в таблице счетов и использую ее для проверки актуальности данных в хеш-таблице.

Желательно ли здесь использовать hashMap?Разве я не использую ehcache или hashmap в моей основной программе?Оба занимают одно и то же место в моей JVM.Я пытаюсь понять, когда использовать hashMap в программе Java, а когда использовать Ehcache

Ответы [ 2 ]

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

A HashMap не является одновременным.Так что вы не можете обновить его.A ConcurrentHashMap есть.Итак, вы хотите это.

Ehcache (on-heap) - это ConcurrentHashMap с обработкой истечения и вытеснения.

Он также совместим с JSR107, что упрощает прозрачное кэширование со многимиframeworks.

Но если вы знаете, сколько элементов будет на вашей карте.И вы знаете, что они никогда не истекают, если вы не замените их, тогда ConcurrentHashMap сделает то, что вам нужно.

Итог, Ehcache - это улучшенный ConcurrentHashMap.

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

Используйте EhCache, потому что он может работать как HashMap, имея возможность изменить свою конфигурацию.

Несмотря на то, что набор данных мал, может быть целесообразно загрузить его полностью в память (HashMap), в противном случае выВы должны решить, сколько памяти вы хотите выделить для нее, и вы должны оставить ее для других вещей.

Здесь EhCache пригодится:

  • настраиваемый размер (вкэш-записи)
  • содержит «наиболее полезные» записи (в зависимости от используемого алгоритма)
  • может хранить некоторые записи на диске
  • поддерживает TTL (Time To Live),TTI (бездействующий), то же самое для диска, в основном, если записи не используются, кеш не занимает места
  • поддерживает кластеризацию
  • хорошо для больших приложений
  • и т. Д.

Пока HashMap:

  • Сохраняет все в памяти
  • Может быть простым в использовании
  • Хорошо для простых программ

Иногда кеши содержат данные, которые не обновляются (например,ошибка или манипуляция БД без ведома приложения).Без механизма очистки HashMap будет хранить эти данные.Хотя у EhCache есть шанс (TTL, TTI) удалить его и при необходимости загрузить новейшие данные.

...