一、为什么用缓存
1.1 空间换时间:
缓存是针对读多写少的场景典型的以空间换时间的操作
空间:内存
时间:读内存速度快(相对于读磁盘)
1.2 局部性原理:
这个世界很多事情都符合 2/8 原则
把热点数据缓存起来就大大提高系统效率
二、缓存组件介绍
2.1 Ehcache
- 快速,针对大型高并发系统场景,Ehcache 的多线程机制有相应的优化改善;
- 简单,很小的 jar 包,简单配置就可直接使用,单机场景下无需过多的其他服务依赖;
- 支持多种的缓存策略,灵活;
- 缓存数据有两级:内存和磁盘,与一般的本地内存缓存相比,有了磁盘的存储空间,将可以支持更大量的数据缓存需求;
- 具有缓存和缓存管理器的侦听接口,能更简单方便的进行缓存实例的监控管理;
- 支持多缓存管理器实例,以及一个实例的多个缓存区域;
2.2 Guava
- 自动将 entry 节点加载进缓存结构中;
- 当缓存的数据超过设置的最大值时,使用 LRU 算法移除;
- 具备根据 entry 节点上次被访问或者写入时间计算它的过期机制;
- 缓存的 key 被封装在 WeakReference 引用内;
- 缓存的 Value 被封装在W eakReference 或 SoftReference 引用内;
- 统计缓存使用过程中命中率、异常率、未命中率等统计数据;