随着硬件的价格下降,每个人对硬件的依赖越来越高。我听说代码并不重要。例如,缓存通常具有虚拟机内存,基于磁盘的存储空间和中间部件(REDIS内存)。我们都知道最好的是最好的,但实际上
因此,Redis必须是最好的选择?在效率和性能方面,不得不提及记忆的要求,这不一定是最好的。因此,应该采用不同的使用不同的缓存策略的场景。
本文使每个人都知道除Redis以外的其他缓存框架:EHCACHE。写作的原因是因为该项目在项目中使用,同时遇到了一些问题,因此我决定深入研究。我发现这真的很有趣?
Ehcache是一个纯Java流程缓存框架,具有快速和功能的特征。注意到这里的关键字过程,基于该过程的高速缓存直觉告诉我们,效率肯定更高,因为它直接在过程中运行,但是不同应用程序之间的缓存共享可能会有问题。
Ehcache是Hibernate中的默认cacheprovider。Spring Boot也支持它。Spring中提供的缓存抽象还支持EHCACHE CACH框架的绑定并支持基于使用的方法。因此,EHCACHE是一种广泛使用的高速缓存框架,广泛使用,也非常方便使用。
EHCACHE提供了各种缓存策略,这些缓存策略主要分为两个级别的内存和磁盘。它是通用缓存,Java EE和轻巧容器的缓存框架。
只需谈论此框架的特征:
Ehcache可以单独使用,但通常与三部曲和其他三部曲类别结合使用。EHCACHE与我的项目中的Shiro结合使用。
除了优势外,Ehcache还具有一些缺点。例如,它占用磁盘空间很大,因为磁盘的算法很简单,但直接存储在元素上。尽管这可以提高效率,但磁盘将满足。很快在频繁的系统中。
另一个是不能保证数据。当然,当Kill突然删除Java流程时,可能会发生冲突。Ehcache对冲突的解决方案是重建缓存,在维护缓存数据时可能会对它产生影响。CACHE只是一个简单的加速度,无法保证数据安全性。
直接在JVM中的EHCACHE CACHE,快速且高效率。尽管EHCache还提供了缓存共享解决方案,但对分布式群集的支持不好,并且缓存共享很麻烦。
REDIS是通过插座的缓存服务。效率低于eHcache,该效率比数据库快得多。处理群集和分布式缓存和成熟解决方案很方便。
因此,如果它是单个应用程序或对缓存访问的高要求,则可以考虑使用EHCACHE;如果它是一个大系统,则在存在缓存共享,分布式部署和缓存内容时,建议使用REDIS。
看一下Ehcache的架构图,并可能理解它由几个部分组成。
缓存复制部分为分布式环境提供了一种缓存复制机制。EHCACHE最初是独立的本地缓存框架组件。在后来的开发中,结合Terracotta服务阵列模型,它可以支持分布式的缓存簇。它主要包含在RMI,JGroups,JMS和Cache Server等通信方法中的节点之间的通信。
进程中的API提供了基于JSR和JMX的支持,可以更好地兼容和移植。同时,它具有针对各种对象的相对完整的监视和管理机制。
网络API提供了RESTFUL API,JMS API,CACE SERVER和其他方法的支持。
在使用过程中,注意关注的核心部分是中间的核心部分。它包含核心API和概念:
这三个的管理可以在以下图中表示:
您还可以查看内存存储算法,例如内存存储lru,内存存储lfu,内存存储店FIFO。也就是说,当缓存占据临界值附近的空间时,上述消除策略将用于清理一部分数据。
EHCACHE提供了三种消除算法:
Ehcache使用懒惰的消除机制。每次将数据放入数据中时,都会节省时间。当您阅读与设置时间的TTL比较时,您将确定它是否会过期。
在理解了上面的基本知识之后,让我们实验如何使用eHcache。在它们之后,ehcache2.x和ehcache3.x之间的使用差距很大。
这里使用了较新的3.9.6版本,使用API的不同版本将有所不同。
Ehcache基于API和XML的两种形式提供Cachemanger和Cache。首先查看API的形式:
在POM文件中介绍EHCACHE依赖性:
创建和使用的代码如下:
上面的代码演示了如何根据API的形式创建CacheManager和Cache,并设置并获得缓存。
依靠JAR软件包是没有变化的,在SRC/MAIN/RESOSD/ROSISTRY/DIRECTORY中创建配置文件EHCACHE.XML。
3.x版本与2.x版本不同,并且在XML配置文件上非常明显。2.x基于EHCACHE元素作为root节点,而3.x使用Config作为根节点。
上述XML中有三个部分:
缓存中的其他属性和元素:
当然,您还可以通过持久性元素配置缓存目录。对于其他属性,您可以缓慢探索。
如前所述,Spring支持缓存,Spring Boot也支持缓存自动配置。以下内容基于Spring Boot来完成EHCACHE的集成和用例演示。
介绍春季靴子中的相应起动器:
在应用程序中配置以下配置。专业:
将@enablecaching注释添加到春季启动开始类:
创建一个用户播放的物理班级:
相应的服务方法实施:
@cachable注释指定@cachable注释的缓存名称,而键是ID.PRINT该方法中的log,如果您在方法中调用它,则将打印。
写作单元测试课:
调用两次的相应方法,打印日志如下:
可以看出,第一个输入方法是在查询中进行的,第二次我缓存。
Spring提供的缓存注释的使用有很多方法和场景,这将不会在此处启动。
因为这项工作碰巧使用了这项技术,所以我与所有人一起研究和撰写文章,以欣赏基于Spring Boot的基本知识,技术架构,使用情况,API使用和Spring Boot集成。每个人都可以在此基础上进一步学习和扩展。因为Ehcache对分布式的支持,本文不涉及。主要原因是它的使用不太好。如果您有兴趣,可以学习自己。
博客作者简介:“ Springboot Technology Inner Book”技术书籍作者,喜欢学习技术,撰写技术干货文章。
公共帐户:博客作者的公共帐户“计划的新愿景”,欢迎关注?
技术交流:请联系博客微信:Zhuan2quan