EhCache-介绍和基本使用

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 Tair(兼容Redis),内存型 2GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: EhCache-介绍和基本使用

一、EhCache介绍


在查询数据的时候,数据大多来自数据库,咱们会基于SQL语句的方式与数据库交互,数据库一般会基于本地磁盘IO的形式将数据读取到内存,返回给Java服务端,Java服务端再将数据响应给客户端,做数据展示。


但是MySQL这种关系型数据库在查询数据时,相对比较慢,因为有磁盘IO,有时没命中索引还需要全盘扫描。在针对一些热点数据时,如果完全采用MySQL,会存在俩问题。第一个MySQL相对很脆弱,肯能会崩,第二个MySQL查询效率慢。会采用缓存。


而缓存分为很多种,相对服务端的角度来说大致分为两种,一种JVM缓存(堆内缓存),另一种是堆外缓存(操作系统的内存中、Redis跨服务的缓存)


Redis不用说太多,Redis基于内存读写,效率很高,而且Redis服务的并发能力很强。毕竟Redis是另一个服务,需要通过网络IO的形式去查询数据。不过一般分布式微服务的缓存首选还是Redis。


但是单体项目,想把缓存的性能提升的比Redis还要快,选择JVM缓存了,一般框架自带的缓存机制,比如Hibernate缓存,MyBatis也有一级缓存和二级缓存。


为什么DAO层框架已经提供了缓存的概念,为什么要搞EhCache:


因为DAO层框架的缓存是在Mapper层触发的,EhCache可以将缓存提到Service层触发。效率肯定会有提升


并且EhCache提供了非常丰富的功能,不但可以将数据存储在JVM内部,还可以放到堆外,甚至还可以存储到本地磁盘。



二、EhCache基本使用


EhCache的官网:www.ehcache.org

EhCache明显开源的,EhCache可以几乎0成本和Spring整合,配合Java规范,直接采用Cache注解实现缓存


@Cacheable这个是Java的规范,Spring集成了这个规范默认整合Redis,不过也可以整合EhCache


EhCache官方有两大版本,分别是2.x和3.x的版本,这里选择3.x版本去玩,可以更好的以SpringBoot的形式去集成到一起使用


先单独使用EhCache查看效果

EhCache快速入门


导入依赖


<dependencies>
    <dependency>
        <groupId>org.ehcache</groupId>
        <artifactId>ehcache</artifactId>
        <version>3.8.1</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>
</dependencies>
复制代码


入门操作


@Test
public void test(){
    //1. 初始化好CacheManager
    CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder()
            // 一个CacheManager可以管理多个Cache
            .withCache(
                    "singleDog",
                    CacheConfigurationBuilder.newCacheConfigurationBuilder(
                            String.class,
                            Object.class,
                            // heap相当于设置数据在堆内存中存储的 个数 或者 大小
                            ResourcePoolsBuilder.newResourcePoolsBuilder().heap(10).build()).build()
            ).build(true);
//        cacheManager.init();
    //2. 基于CacheManager回去到Cache对象
    Cache<String, Object> cache = cacheManager.getCache("singleDog", String.class, Object.class);
    //3. 存  set/put/add/
    cache.put("ehcache","57个单身狗!!");
    //4. 取
    System.out.println(cache.get("ehcache"));
}


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
6月前
|
缓存 NoSQL Java
spring cache整合redis实现springboot项目中的缓存功能
spring cache整合redis实现springboot项目中的缓存功能
127 1
|
缓存 NoSQL Java
SpringBoot-26-缓存Ehcache的使用
spring缓存(cache)是在Spring3.1开始引入的,但是其本身只提供了缓存接口,不提供具体缓存的实现,其实现需要第三方缓存实现(Generic、EhCache、Redis等)。EhCache、Redis比较常用,使用Redis的时候需要先安装Redis服务器。
99 0
|
XML Java 数据库连接
Hibernate基本使用
Hibernate基本使用
66 0
|
XML 缓存 Java
|
存储 缓存 NoSQL
Java--SpringBoot-24-内置缓存CacheManager
今天来看一下SpringBoot的内置缓存CacheManager怎么使用!
411 0
Java--SpringBoot-24-内置缓存CacheManager
|
存储 缓存 Java
EhCache-配置和SpringBoot整合
EhCache-配置和SpringBoot整合
EhCache-配置和SpringBoot整合
|
存储 缓存 NoSQL
【笔记06】Ehcache 缓存框架的使用
Ehcache 是一个纯 Java 的缓存框架。具有快速、精干等特点,是 Hibernate(一个持久层框架,类似 MyBatis) 中默认的 CacheProvider
200 0
|
存储 缓存 算法
Caffeine 本地缓存框架原理及用法总结
Caffeine 本地缓存框架原理及用法总结
2490 1
Caffeine 本地缓存框架原理及用法总结
|
存储 缓存 NoSQL
SpringBoot整合Ehcache缓存(二十二)
一.Ehcache 二. SpringBoot 整合 Ehcache 缓存 二.一 添加 ehcache依赖 二.二 配置 ehcache.xml 文件 二.三 application.yml 指定 ehcache缓存配置文件位置 二.四 启动类添加 @EnableCaching 缓存 二.五 Spring Cache 注解与 Ehcache的使用
533 0
|
存储 SQL 缓存
Spring Boot 2.x基础教程:EhCache缓存的使用
Spring Boot 2.x基础教程:EhCache缓存的使用
126 0