В EhCache3 постоянный кеш означает, что данные всегда должны записываться в дисковый кеш - PullRequest
0 голосов
/ 03 апреля 2019

С Ehcache 3, если у меня есть постоянный кеш, означает ли это, что все будет записано в дисковый кеш, даже если кучи кучи / вне кэша заполнены или нет?

то есть у меня есть

PersistentCacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder()
                .with(CacheManagerBuilder.persistence(new File(Platform.getPlatformDatabaseFolder(), RELEASE_CACHE)))
                .withCache(RELEASE_CACHE,
                        CacheConfigurationBuilder.newCacheConfigurationBuilder(
                                String.class,
                                String.class,
                                ResourcePoolsBuilder.newResourcePoolsBuilder()
                                        .heap(100, EntryUnit.ENTRIES)
                                        .offheap(10, MemoryUnit.MB)
                                        .disk(20, MemoryUnit.MB, true)))
                .build();

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

Однако иногда приложение может использоваться таким образом, что куча / выгрузка не используется полностью, поэтому я не хочу, чтобы приложение тратило время на запись данных на диск только потому, что я пометил его какупорный.Ведь причина, по которой я использую кеш, заключается в повышении производительности.

1 Ответ

0 голосов
/ 15 апреля 2019

Как и задокументировано , когда у вас есть несколько уровней в Ehcache, самый низкий уровень (в вашем случае диск) всегда видит put для кэша, в то время как более высокие уровни просто аннулируются (offheap и куча в твой случай). На get значение переносится на самый высокий уровень (в вашем случае это куча) для быстрого последующего доступа. Если это приводит к вытеснению из кучи, то высвободившееся значение переносится вниз в кучу, а в каскаде это может привести к вытеснению из кучи на диск.

Обратите внимание, что вышеуказанная система сделана таким образом, что производительность остается предсказуемой, а не резко падает при заполнении уровня.

Так что в Ehcache стоит иметь несколько уровней. В зависимости от вашего варианта использования может быть лучше активировать меньшее количество уровней. Как всегда с кешированием: измеряйте и адаптируйте.

...