Привет, мировой пример для ehcache?
ehcache - чрезвычайно настраиваемый зверь, и примеры довольно сложны, часто с участием многих слоев интерфейсов.
Приходит ли кто-нибудь к простейшему примеру, который просто кэширует что-то вроде одного числа в памяти (не распределенного, без XML, как можно меньше строк java). Затем число кэшируется в течение 60 секунд, затем следующий запрос на чтение заставляет его получать новое значение (например, вызывая Random.nextInt() или аналогичный)
Быстрее/проще написать собственный кеш для чего-то вроде синглтона и немного синхронизации?
Нет Spring пожалуйста.
Ответы
Ответ 1
EhCache поставляется с отказоустойчивой конфигурацией, которая имеет некоторое разумное время истечения (120 секунд). Этого достаточно, чтобы его запустить и запустить.
Импорт
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;
Тогда создание кеша довольно просто:
CacheManager.getInstance().addCache("test");
Создает кеш с именем test
. У вас может быть много разных отдельных кешей, управляемых одним и тем же CacheManager
. Добавление пар (key, value)
в этот кеш так же просто, как:
CacheManager.getInstance().getCache("test").put(new Element(key, value));
Получение значения для заданного ключа так же просто, как:
Element elt = CacheManager.getInstance().getCache("test").get(key);
return (elt == null ? null : elt.getObjectValue());
Если вы попытаетесь получить доступ к элементу после 120-секундного срока истечения по умолчанию, кэш вернет null (следовательно, проверка, чтобы увидеть, является ли elt
null). Вы можете отрегулировать период истечения срока действия, создав собственный файл ehcache.xml
- документация для этого является достойной на сайте ehcache.
Ответ 2
Рабочая реализация ответа jbrookover:
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;
import net.sf.ehcache.Cache;
public class EHCacheDemo {
public static final void main(String[] igno_red) {
CacheManager cchm = CacheManager.getInstance();
//Create a cache
cchm.addCache("test");
//Add key-value pairs
Cache cch = cchm.getCache("test");
cch.put(new Element("tarzan", "Jane"));
cch.put(new Element("kermit", "Piggy"));
//Retrieve a value for a given key
Element elt = cch.get("tarzan");
String sPartner = (elt == null ? null : elt.getObjectValue().toString());
System.out.println(sPartner); //Outputs "Jane"
//Required or the application will hang
cchm.removeAllCaches(); //alternatively: cchm.shutdown();
}
}