The JCache specification has an option to configure a single ExpiryPolicy
per cache. Hazelcast ICache extension
offers the possibility to define a custom ExpiryPolicy
per key by providing a set of method overloads with an expirePolicy
parameter, as in the list of asynchronous methods in the Async Methods section. This means that you can pass custom expiry policies to a cache operation.
Here is how an ExpirePolicy
is set on JCache configuration:
CompleteConfiguration<String, String> config =
new MutableConfiguration<String, String>()
setExpiryPolicyFactory(
AccessedExpiryPolicy.factoryOf( Duration.ONE_MINUTE )
);
To pass a custom ExpirePolicy
, a set of overloads is provided. You can use them as shown in the following code example.
ICache<Integer, String> unwrappedCache = cache.unwrap( ICache.class );
unwrappedCache.put( 1, "value", new AccessedExpiryPolicy( Duration.ONE_DAY ) );
The ExpirePolicy
instance can be pre-created, cached, and re-used, but only for each cache instance. This is because ExpirePolicy
implementations can be marked as java.io.Closeable
. The following list shows the provided method overloads over javax.cache.Cache
by com.hazelcast.cache.ICache
featuring the ExpiryPolicy
parameter:
-
get(key)
: -
get(key, expiryPolicy)
-
getAll(keys)
: -
getAll(keys, expirePolicy)
-
put(key, value)
: -
put(key, value, expirePolicy)
-
getAndPut(key, value)
: -
getAndPut(key, value, expirePolicy)
-
putAll(map)
: -
putAll(map, expirePolicy)
-
putIfAbsent(key, value)
: -
putIfAbsent(key, value, expirePolicy)
-
replace(key, value)
: -
replace(key, value, expirePolicy)
-
replace(key, oldValue, newValue)
: -
replace(key, oldValue, newValue, expirePolicy)
-
getAndReplace(key, value)
: -
getAndReplace(key, value, expirePolicy)
Asynchronous method overloads are not listed here. Please see ICache Async Methods for the list of asynchronous method overloads.