Ehcache

spring cache

◇◆丶佛笑我妖孽 提交于 2020-04-03 18:00:24
spring-ehcache.xml文件内容如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:cache="http://www.springframework.org/schema/cache" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/cache http://www

Ehcache计算Java对象内存大小

最后都变了- 提交于 2020-03-24 06:25:00
在EHCache中,可以设置maxBytesLocalHeap、maxBytesLocalOffHeap、maxBytesLocalDisk值,以控制Cache占用的内存、磁盘的大小(注:这里Off Heap是指Element中的值已被序列化,但是还没写入磁盘的状态,貌似只有企业版的EHCache支持这种配置;而这里maxBytesLocalDisk是指在最大在磁盘中的数据大小,而不是磁盘文件大小,因为磁盘文中有一些数据是空闲区),因而EHCache需要有一种机制计算一个类在内存、磁盘中占用的字节数,其中在磁盘中占用的字节大小计算比较容易,只需要知道序列化后字节数组的大小,并且加上一些统计信息,如过期时间、磁盘位置、命中次数等信息即可,而要计算一个对象实例在内存中占用的大小则要复杂一些。 计算一个实例内存占用大小思路 在Java中,除了基本类型,其他所有通过字段包含其他实例的关系都是引用关系,因而我们不能直接计算该实例占用的内存大小,而是要递归的计算其所有字段占用的内存大小的和。在Java中,我们可以将所有这些通过字段引用简单的看成一种树状结构,这样就可以遍历这棵树,计算每个节点占用的内存大小,所有这些节点占用的内存大小的总和就当前实例占用的内存大小,遍历的算法有:先序遍历、中序遍历、后序遍历、层级遍历等。但是在实际情况中很容易出现环状引用(最简单的是两个实例之间的直接引用

课时11:禁用、清理二级缓存,以及整合Ehcache缓存

烈酒焚心 提交于 2020-03-10 20:56:16
.1)如何禁用二级缓存   1 在具体要关闭的mapper.xml中的select标签里面填写 <select id="selectStudentById" resultType="student" parameterType="Integer" useCache="false"> select * from student where stuno=#{stuno} </select> .2).清理:与清理缓存一级缓存相同  1 SqlSession.close()才会记录成缓存;(执行增删改会将缓存清除了;设计的原因 是为了脏数据的产生) 在二级缓存中,SqlSession.commit()不能查询自身的commit()。     SqlSession.commit()会清理一级缓存和二级缓存;但是清理二级缓存时不能查询自身的SqlSession.commit()  2 在select标签中添加flushCache="true"也可以清除缓存 .3)命中率:   1.zs:0% ===>50% ===> 66.6% ===> 75% .4)整合Ehcache二级缓存 (第三方缓存有很多种,以Ehcache为例)   1.需要导入如下三个jar包 <!-- https://mvnrepository.com/artifact/net.sf.ehcache/ehcache-core

spring整合ehcache

有些话、适合烂在心里 提交于 2020-03-10 11:36:27
首先导入ehcache-web.jar ehcache-core.jar web.xml配置 <filter> <filter-name>PageCacheFilter</filter-name> <filter-class>net.sf.ehcache.constructs.web.filter.SimplePageCachingFilter </filter-class> </filter> <filter-mapping> <filter-name>PageCacheFilter</filter-name> <url-pattern>*.html</url-pattern> <!--缓存html文件--> </filter-mapping> ehcache配置 <?xml version="1.0" encoding="UTF-8"?> <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd" updateCheck="false"> <diskStore path="java.io.tmpdir" /> <defaultCache eternal="false"

EhCache

你说的曾经没有我的故事 提交于 2020-03-10 11:20:08
EhCache 介绍 EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认CacheProvider。Ehcache是一种广泛使用的开源Java分布式缓存。主要面向通用缓存,Java EE和轻量级容器。它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个gzip缓存servlet过滤器,支持REST和SOAP api等特点。 Spring 提供了对缓存功能的抽象:即允许绑定不同的缓存解决方案(如Ehcache),但本身不直接提供缓存功能的实现。它支持注解方式使用缓存,非常方便。 主要特性 快速 简单 多种缓存策略 缓存数据有两级:内存和磁盘,因此无需担心容量问题 缓存数据会在虚拟机重启的过程中写入磁盘 可以通过RMI、可插入API等方式进行分布式缓存 具有缓存和缓存管理器的侦听接口 支持多缓存管理器实例,以及一个实例的多个缓存区域 提供Hibernate的缓存实现 配置文件说明 diskStore path :指定磁盘存储的位置 defaultCache 默认的缓存 cache 自定的缓存,当自定的配置不满足实际情况时可以通过自定义(可以 包含多个cache节点 ) name : 缓存的名称,可以通过 指定名称 获取指定的某个 Cache对象 maxElementsInMemory :内存中允许存储的最大的 元素个数

Redis Ehcached 都是干什么的

拈花ヽ惹草 提交于 2020-03-05 13:37:27
Redis 属于独立的运行程序,需要单独安装后,使用JAVA中的Jedis来操纵。因为它是独立,所以如果你写个单元测试程序,放一些数据在Redis中,然后又写一个程序去拿数据,那么是可以拿到这个数据的。 Ehcache 与Redis明显不同,它与java程序是绑在一起的,java程序活着,它就活着。譬如,写一个独立程序放数据,再写一个独立程序拿数据,那么是拿不到数据的。只能在独立程序中才能拿到数据。ehcache是Hibernate中默认的CacheProvider,直接在jvm虚拟机中缓存,速度快,效率高;但是缓存共享麻烦,集群分布式应用不方便。 缓存数据有两级:内存和磁盘,因此无需担心容量问题,提供Hibernate的缓存实现 。 Ehcache特点 1. 够快 Ehcache的发行有一段时长了,经过几年的努力和不计其数的性能测试,Ehcache终被设计于large, high concurrency systems. 2. 够简单 开发者提供的接口非常简单明了,从Ehcache的搭建到运用运行仅仅需要的是你宝贵的几分钟。其实很多开发者都不知道自己用在用Ehcache,Ehcache被广泛的运用于其他的开源项目 比如:hibernate 3.够袖珍 关于这点的特性,官方给了一个很可爱的名字small foot print ,一般Ehcache的发布版本不会到2M,V 2.2.3

Why @Cacheable not working when calling cacheable method from method of non bean class

馋奶兔 提交于 2020-03-05 07:53:21
问题 I have suddently found that @Cacheable not worked when i call cacheable method from method inside not bean class. Please find below my code and help me what is issue or something i miss. EmployeeDAO.java @Component("employeeDAO") public class EmployeeDAO { private static EmployeeDAO staticEmployeeDAO; public static EmployeeDAO getInstance(){ return staticEmployeeDAO; } @PostConstruct void initStatic(){ staticEmployeeDAO = this; } @Cacheable(value = "employeeCache") public List<Employee>

Shiro框架缓存相关

给你一囗甜甜゛ 提交于 2020-03-03 10:13:37
shiro框架使用缓存 解决问题:登陆之后每次访问页面都要进行认证(消耗性能),使用缓存技术,只需要认证一次,即可多次访问 1.pom文件中导入依赖包 <!--导入缓存所需要的包--> < dependency > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-starter-cache </ artifactId > </ dependency > < dependency > < groupId > net.sf.ehcache </ groupId > < artifactId > ehcache </ artifactId > < version > 2.10.4 </ version > </ dependency > < dependency > < groupId > org.apache.shiro </ groupId > < artifactId > shiro-ehcache </ artifactId > < version > 1.4.0 </ version > </ dependency > 2.resource目录中导入ehcahe.xml文件 <?xml version="1.0" encoding="UTF-8"?> < ehcache

Spring缓存注解@Cacheable、@CacheEvict、@CachePut使用

北城以北 提交于 2020-02-28 04:54:36
扩展阅读: 注释驱动的 Spring cache 缓存介绍 spring boot + spring cache 实现两级缓存(redis + caffeine) 从3.1开始,Spring引入了对Cache的支持。其使用方法和原理都类似于Spring对事务管理的支持。Spring Cache是作用在方法上的,其核心思想是这样的:当我们在调用一个缓存方法时会把该方法参数和返回结果作为一个键值对存放在缓存中,等到下次利用同样的参数来调用该方法时将不再执行该方法,而是直接从缓存中获取结果进行返回。所以在使用Spring Cache的时候我们要保证我们缓存的方法对于相同的方法参数要有相同的返回结果。 使用Spring Cache需要我们做两方面的事: n 声明某些方法使用缓存 n 配置Spring对Cache的支持 和Spring对事务管理的支持一样,Spring对Cache的支持也有基于注解和基于XML配置两种方式。下面我们先来看看基于注解的方式。 1 基于注解的支持 Spring为我们提供了几个注解来支持Spring Cache。其核心主要是@Cacheable和@CacheEvict。使用@Cacheable标记的方法在执行后Spring Cache将缓存其返回结果,而使用@CacheEvict标记的方法会在方法执行前或者执行后移除Spring Cache中的某些元素

Spring Boot整合EhCache

安稳与你 提交于 2020-02-25 23:37:45
本文讲解Spring Boot与EhCache的整合。 1 EhCache简介 EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认CacheProvider。Ehcache是一种广泛使用的开源Java分布式缓存。主要面向通用缓存,Java EE和轻量级容器。它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个gzip缓存servlet过滤器,支持REST和SOAP api等特点。 2 Spring Boot整合EhCache步骤 2.1 创建项目,导入依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.yiidian</groupId> <artifactId>ch03_10