2013-09-24 2 views
1

Я хочу реализовать кеш с использованием механизма кэширования Guava.Реализация кеша с использованием Guava

У меня есть запрос БД, который возвращает карту, я хочу кэшировать всю карту, но пусть она истекает через определенное количество времени.

Я понимаю, что тайники Гуавы работают как базы предметов. Мы предоставляем ключ, Cache либо вернет соответствующее значение из кеша, либо получит его.

Есть ли способ использовать Guava для получения всего, кешировать его, но тайм-аут после определенного периода времени и получить все снова.

Большое спасибо

+1

'LoadingCache', вероятно, что вам нужно. См. Также этот вопрос: http://stackoverflow.com/questions/11463675/how-to-automatically-refresh-cache-using-google-guava?rq=1 –

+0

Похоже, вы хотите, чтобы 'Cache > ', с помощью всего лишь одного ключа. –

+0

Cache.asMap(). PutAll (yourMap) может быть решением, если вам нужно кэшировать элементы на карте. –

ответ

2

Вы можете создать экземпляр Supplier<Map<K,V>>, который извлекает всю карту из базы данных, а затем использовать Suppliers.memoizeWithExpiration кэшировать его.

Похожие:

Смежные вопросы