缓存的几种备选方案

1、本地缓存
本地缓存即In-Memory cache:一般直接存储Object,最轻量级的缓存,速度最快,但JVM堆内存通常不大(因为JVM内存回收机制受限制),而且受到GC的控制,JVM堆内缓存数量受限制,缓存命中率也因此受到影响。

2、堆外缓存
堆外缓存,即In-process off-heap cache:典型的实现方案是terracotta的bigmemory。堆外缓存通过DirectBuffer绕过JVM直接获取os内存,需要序列化为byteArray存储,因此速度会比In memory的Object Cache速度慢。堆外缓存不受GC影响,在系统内存充足的时候可以创建足够大的缓存。但需要自行管理内存的回收、碎片整理和内存换入换出问题。

3、磁盘缓存
磁盘缓存:将缓存持久化到硬盘上,容量可以更大,但需要序列化,而且写文件IO开销很大,速度更低。可以和前两种缓存结合起来解决应用重启缓存冷启动的问题。

4、集中式/分布式缓存
集中式/分布式缓存:容量不受限制,网络通信通常要比磁盘IO速度略快(还要取决于什么样的磁盘和网络),没有冷启动问题,需要通信开销和序列化开销。

你可能感兴趣的:(java,缓存方案)