课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
缓存是程序员在开发软件的时候需要重点关注的一个问题,而今天我们就通过案例分析来了解一下,常见的缓存类型都有哪些。
缓存类型总体上来看,可以分为:堆缓存、堆外缓存、磁盘缓存和分布式缓存。
堆内存
使用Java堆内存来存储对象。使用堆缓存的好处是没有序列化/反序列化,是快的缓存。缺点也很明显,当缓存的数据量很大时,GC(垃圾回收)暂停时间会变长,存储容量受限于堆空间大小。一般通过软引用/弱引用来存储缓存对象。即当堆内存不足时,可以强制回收这部分内存释放堆内存空间。一般使用堆缓存存储较热的数据。可以使用GuavaCache、Ehcache3.x、MapDB实现。
堆外内存
即缓存数据存储在堆外内存,可以减少GC暂停时间(堆对象转移到堆外,GC扫描和移动的对象变少了),可以支持更多的缓存空间(只受机器内存大小限制,不受堆空间的影响)。但是,读取数据时需要序列化/反序列化。因此,会比堆缓存慢很多。可以使用Ehcache3.x、MapDB实现。
磁盘缓存
即缓存数据存储在磁盘上,在JVM重启时数据还存在,而堆/堆外缓存数据会丢失,需要重新加载。可以使用Ehcache3.x、MapDB实现。
分布式缓存
分布式缓存可以使用ehcache-clustered(配合Terracottaserver)实现Java进程间分布式缓存。也可以使用Memcached、Redis实现。
使用分布式缓存时,有两种模式如下:
单机模式:存储热的数据到堆缓存,相对热的数据到堆外缓存,不热的数据到磁盘缓存。
集群模式:存储热的数据到堆缓存,相对热的数据到对外缓存,全量数据到分布式缓存。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请在707945861群中学习了解。