If the cache contains a value mapped to key then return it,
otherwise run cons and add that value to the cache and return it.
If the cache contains a value mapped to key then return it,
otherwise run cons and add that value to the cache and return it.
Evict a value from the cache.
Update the cache yourself with KeyedCache(1) = "hello"
A simple Read-through cache.
An example of using it with a ProtoUser subclass:
object UserCache extends KeyedCache[Long, User](100, Full(0.75f), (id: Long) => User.find(By(User.id, id)))