Tuesday 28 June 2022

Ehcache: Replace the entry when the key mapped to given value

org.ehcache.Cache#replace method replaces the entry for a key only if currently mapped to the given value and the entry is not expired.

 

Signature

boolean replace(K key, V oldValue, V newValue) throws CacheLoadingException, CacheWritingException;

 

This is equivalent to.

if (cache.containsKey(key) && cache.get(key).equals(oldValue)) {
	cache.put(key, newValue);
	return true;
} 
else 
	return false;

 

Example

empCache.replace(1L, "Ram,34", "Rama Krishna, 41");

 


Find the below working application.

 

CacheReplaceEntryWhenValueMatch.java

package com.sample.app;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import org.ehcache.Cache;
import org.ehcache.CacheManager;
import org.ehcache.Cache.Entry;
import org.ehcache.config.builders.CacheConfigurationBuilder;
import org.ehcache.config.builders.CacheManagerBuilder;
import org.ehcache.config.builders.ResourcePoolsBuilder;

public class CacheReplaceEntryWhenValueMatch {

	private static void printAllElementsFromCache(Cache<Long, String> empCache) {
		System.out.println("\nPrint all the elements from the cache");

		Iterator<Entry<Long, String>> iter = empCache.iterator();

		while (iter.hasNext()) {
			Entry<Long, String> entry = iter.next();
			System.out.println(entry.getKey() + " is mapped to (" + entry.getValue() + ")");
		}

	}

	public static void main(String[] args) {
		CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder().build(true);

		Cache<Long, String> empCache = cacheManager.createCache("empCache", CacheConfigurationBuilder
				.newCacheConfigurationBuilder(Long.class, String.class, ResourcePoolsBuilder.heap(100)).build());

		Map<Long, String> dataMap = new HashMap<>();
		dataMap.put(1L, "Ram,34");
		dataMap.put(2L, "Krishna,38");
		dataMap.put(3L, "Ravi,41");
		empCache.putAll(dataMap);

		printAllElementsFromCache(empCache);

		System.out.println("\nReplace elements with keys 1 amd 5 when the value is matched to \"Ram,34\"");
		empCache.replace(1L, "Ram,34", "Rama Krishna, 41");
		empCache.replace(2L, "Ram,34", "Rama Krishna, 41");

		printAllElementsFromCache(empCache);

	}

}

 

Output

Print all the elements from the cache
1 is mapped to (Ram,34)
2 is mapped to (Krishna,38)
3 is mapped to (Ravi,41)

Replace elements with keys 1 amd 5 when the value is matched to "Ram,34"

Print all the elements from the cache
1 is mapped to (Rama Krishna, 41)
2 is mapped to (Krishna,38)
3 is mapped to (Ravi,41)

 

 

 

 

 

 

 

Previous                                                 Next                                                 Home

No comments:

Post a Comment