这里不会讨论复杂的缓存设计的问题。

spring cache 不支持多级的缓存(多级缓存很难做到完全透明,这里也不建议使用没有饱受考验的第三方库),这意味着需要从进程内缓存和分布式的缓存中做选择。

个人认为,在需要做选择的时候,一定是分布式缓存(普遍的情况下都是 redis)。这是由缓存的目的决定的,缓存的目的在于减少 I/O 或者 CPU 计算的压力, 并不是提高相应速度,即使能提高相应速度也应当是副作用,缓存的意义在于减少单点的压力,从而提升整个服务的并发量,而非减少每个请求的响应时间。