2015-11-17 3 views
0

Требуется очистить кеш из лесного камня. Таким образом, как только кеш достигнет Max Entries или Max Heap Size, очистите его в файл.Невозможно очистить кеш haselcast после того, как он достигнет настроенного количества записей/размер

конфигурации в hazelcast.xml

<map name="TEST_CACHE"> 
    <max-size policy="PER_NODE">3</max-size> 
    <eviction-policy>LFU</eviction-policy> 
</map> 

Код испытания

public class Test implements EntryEvictedListener , Serializable{ 

    private static final long serialVersionUID = -1927328346902661527L; 
    private static HazelcastInstance hazelcastInstance = HazelCacheUtil 
      .getHazelCacheInstance(); 
    private static volatile IMap<Object, Object> hazel_cache = hazelcastInstance 
      .getMap("TEST_CACHE"); 

    public static void main(String[] args) throws Exception { 
     hazel_cache.addEntryListener(new Test(),true); 

     for (int i = 0; i < 3; i++) { 
      hazel_cache.put(i+1, new Test()); 
     } 
     System.out.println(hazel_cache); 

     System.out.println(""); 
     for (Entry e : hazel_cache.entrySet()) { 
      System.out.println(e.getKey() + " : " + e.getValue()); 
     } 
    } 

    @Override 
    public void entryEvicted(EntryEvent e) { 
     System.out.println(e.getKey()+" : "+e.getOldValue()+"\n"); 
    } 
} 

и entryEvicted я буду только получать 3-й объект входа

Entry EVICTED :: 1 
3 : [email protected] 

есть ли способ, чтобы избавиться содержимое кеша в файл/db после достижения максимального размера?

ответ

0

В конфигурации карты есть evictionPercentage. Этот процент записей выдается, когда достигается максимальный размер.

Также обратите внимание, что hazelcast предназначен для большого количества записей и выселения для каждого раздела. Поэтому я рекомендую вам провести ваши тесты с 1000+ записей, чтобы увидеть ожидаемые результаты.

 Смежные вопросы

  • Нет связанных вопросов^_^