api.cache Работа с кешем
-
api.cache.create(name)
api.cache.create(name, limit)
api.cache.create(name, limit, lifetime)
Создать новый или получить уже имеющийся кеш с заданными параметрами.
Параметры метода:
- name — имя кеша. String;
- limit — максимальное количество элементов. Int;
- lifetime — время жизни элемента в кеше (в секундах) с момента добавления. Int.
Возвращает представление кеша в виде Map, отражает текущее состояние кеша и позволяет взаимодействовать с ним.
Пример:
def result = api.cache.create('test', 5, 15);
Поддерживаемые методы (совместимы с java.util.concurrent.ConcurrentMap):
- Object put(Object key, Object value) — добавляет значение в кеш по указанному ключу.
- Object get(Object key) — возвращает значение по ключу.
- Object remove(Object key) — удаляет значение по ключу.
- void clear() — удаляет все элементы из кеша.
Пример:
Copydef cache = api.cache.create('test', 5, 15);
cache.put('key', 'value'); # добавить значение в кеш
def value = cache.get('key'); # получить значение из кешаОсобенности:
- Тайм-аут вытеснения будет срабатывать только после сохранения транзакции. До сохранения все объекты добавленные в кеш, включая просроченные, будут еще доступны.
- Вытеснение по максимальному размеру сработает после сохранения транзакции. До сохранения размер кеша может быть больше максимально установленного. После сохранения лишние элементы будут вытеснены.
- Объект, используемый в качестве ключа, должен корректно переопределять методы equals() и hashCode() и быть иммутабельным — то есть его состояние не должно изменяться после создания.
- Значение null не допускается.
- Не рекомендуется использовать метод clear(), если нет уверенности, что к кешу нет параллельных обращений.
- Не следует создавать кеш без ограничений по времени жизни и максимальному количеству элементов, так как это может привести к утечке памяти.