/**
* Copyright (C) 2013-2016 The Rythm Engine project
* for LICENSE and other details see:
* https://github.com/rythmengine/rythmengine
*/
package org.rythmengine.extension;
import java.io.Serializable;
/**
* Define cache service
*/
public interface ICacheService {
/**
* Store an item into the cache service by key and set ttl value
*
* @param key
* @param value
* @param ttl time to live of the cached item. Time unit is second.
* If set to negative number, then it will never expire.
* If set to zero then the default ttl value will be used
*/
void put(String key, Serializable value, int ttl);
/**
* Store an item into the cache by key and use default ttl
*
* @param key
* @param value
*/
void put(String key, Serializable value);
/**
* Remove an item from cache service by key
*
* @param key
* @return the value associated with the key
* @deprecated use {@link #evict(String)} instead
*/
Serializable remove(String key);
/**
* Remove an item from the cache service by key
* @param key
*/
void evict(String key);
/**
* Return an item from the cache service by key
*
* @param key
* @return the value associated with the key
*/
Serializable get(String key);
/**
* Check if the cache contains key
*
* @param key
* @return true if key is found in the cache
* @deprecated
*/
boolean contains(String key);
/**
* Remove all cached items
*/
void clear();
/**
* Set default ttl value which will be used if user pass 0 as ttl or not specified ttl
*
* @param ttl
*/
void setDefaultTTL(int ttl);
/**
* Shutdown the cache service
*/
void shutdown();
/**
* Restart the cache service after shutdown
*
* <p>Note, by default the cache service
* should be started after initialized</p>
*/
void startup();
}