Для простого кеширования я все еще использую решение для кэширования Guava в Scala.Легкий и проверенный в бою.
Если он соответствует вашим требованиям и ограничениям, как правило, изложенным ниже, это может быть отличным вариантом:
- Желание потратить немного памяти для повышения скорости.
- Ожидается, что ключи иногда будут запрашиваться более одного раза.
- В вашем кеше не нужно хранить больше данных, чем умещается в оперативной памяти.(Кэши Guava являются локальными для одного запуска вашего приложения. Они не хранят данные в файлах или на внешних серверах.)
Пример использования этого будет примерно таким:
lazy val cachedData = CacheBuilder.newBuilder()
.expireAfterWrite(60, TimeUnit.MINUTES)
.maximumSize(10)
.build(
new CacheLoader[Key, Data] {
def load(key: Key): Data = {
veryExpansiveDataCreation(key)
}
}
)
Чтобы читать из него, вы можете использовать что-то вроде:
def cachedData(ketToData: Key): Data = {
try {
return cachedData.get(ketToData)
} catch {
case ee: Exception => throw new YourSpecialException(ee.getMessage);
}
}