本文介绍: 书接前文,继续深耕。上一篇博主对Redis进行了入门介绍,大体知道了Redis可以干什么以及怎么使用它。今日博主继续带着大家学习如何使用Ehcache,这是一款基于Java缓存框架。微服务实战系列之Redis(cache)微服务实战系列之Cache服务实战系列之Nginx技巧篇)微服务实战系列之Nginx服务实战系列之Feign微服务实战系列之Sentinel微服务实战系列之Token微服务实战系列之Nacos微服务实战系列之Gateway微服务实战系列之加密RSA微服务实战系列之签名Sign。

前言

书接前文,继续深耕。上一篇博主对Redis进行了入门介绍,大体知道了Redis可以干什么以及怎么使用它。

今日博主继续带着大家学习如何使用EhCache,这是一款基于Java缓存框架

在这里插入图片描述



一、Ehcache简介

Ehcache is an opensource, standardsbased cache for boosting performance, offloading your database, and simplifying scalability, it is today’s most widely used Java-based cache.
Ehcache provides inprocess cache, which you can replicate across multiple nodes.

博主提炼几个关键词开源标准化轻量级、Java缓存分布式
在这里插入图片描述

1. 快速入门

Ehcache支持API、XML的的集成方式,博主以XML为例进行介绍

1.1 导入依赖
<!-- https://mvnrepository.com/artifact/net.sf.ehcache/ehcache -->
<dependency>
    <groupId>net.sf.ehcache</groupId>
    <artifactId>ehcache</artifactId>
    <version>2.10.9.2</version>
</dependency>

因为只依赖 slf4j-api,所以Ehcache真正的做到了轻量级

1.2 配置参数

准备一个echache.xml文件参考配置

<?xml version="1.0" encoding="UTF-8"?>
<ehcache>
   <!--  指定磁盘存储目录-->
   <diskStore path="d:/ehcache/mycache/" />
   <!-- 
        defaultCache:默认缓存
        maxElementsInMemory:内存最大缓存对象数
        eternal:是否永不过期,此时会忽略timeToIdleSecondstimeToLiveSeconds属性
        overflowToDisk:Element数量达到maxElementsInMemory时,写到磁盘中
   -->
   <defaultCache
      maxElementsInMemory="100"
      eternal="true"
      overflowToDisk="true"/>
 <!-- 
        maxElementsInMemory:设置成1且overflowToDisktrue代表只要有一个Element,就立即持久化到硬盘
        eternal:设置true,永久有效
        maxElementsOnDisk:硬盘最大缓存对象数,不限为0
        diskPersistent:是否缓存虚拟机重启数据 
     -->
    <cache 
      name="firstCache"
      maxElementsInMemory="1" 
      eternal="true"
      overflowToDisk="true" 
      maxElementsOnDisk="0"
      diskPersistent="true"/>
 
</ehcache>
2. 数据管理机制

Ehcache数据缓存依赖Manager完成,遵循CacheManager—>Cache—>Element层级关系,以下是每个组件的特点。

在这里插入图片描述

3. 缓存策略
  • FIFO:先进先出
  • LRU:最近最少使用
  • LFU:最不经常使用

二、单体OR集群

1. 单体

单体模式数据存在本地磁盘内存中,适用于数据缓存要求较高的场景。因此需要准备足够的磁盘内存空间

2. 集群

集群模式,Ehcache提供了多种部署方案比如基于RMI、JMS等组内广播策略实现分布式缓存部署
鉴于Ehcache不保证数据安全(即数据访问正确性),所以其特点之一可能“快而不准”,如此可能会带来一个问题“缓存一致性。因此,通常需结合其他保障一致性组件配合使用,实现二级缓存,如下图
在这里插入图片描述


结语

Ehcache作为近年来比较流行的Java缓存框架,对于本地缓存的支持已足够。“小而快”的特点,也让它成为微服务中的热门组件。当然也存在粗暴的一面,也因此失去了分布式部分优势。
所以各位盆友不同的缓存各领风骚,选择需谨慎!
在这里插入图片描述

原文地址:https://blog.csdn.net/splendid_java/article/details/134709772

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_34234.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注