A local in-memory cache is very fast, but isolated to one JVM. A distributed cache is shared across instances, but slower and operationally heavier. Combining both usually leads to messy application ...