zoukankan      html  css  js  c++  java
  • Springboot整合Ehcache缓存

    Pom.xml导包

    <!-- ehcache -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-cache</artifactId>
            </dependency>
            <dependency>
                <groupId>net.sf.ehcache</groupId>
                <artifactId>ehcache</artifactId>
            </dependency>

    启动类加注解

    添加ehcache配置文件

    <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="ehcache.xsd">
        <cache name="dictcache" eternal="false" maxEntriesLocalHeap="0"
            timeToIdleSeconds="86400"></cache>
        <!-- 可以配置多个cache -->
        <!-- eternal:true表示对象永不过期,此时会忽略timeToIdleSeconds和 timeToLiveSeconds属性,默认为false -->
        <!-- maxEntriesLocalHeap:堆内存中最大缓存对象数,0没有限制 -->
        <!-- timeToIdleSeconds: 单位(秒),设定允许对象处于空闲状态的最长时间,以秒为 单位。当对象自从最近一次被访问后,如果处于空闲状态的时间超过了 
            timeToIdleSeconds属性值,这个对象就会过期,EHCache将把它从缓存中清空。 只有当eternal属性为false,该属性才有效。如果该属性值为0,则表示对象可以 
            无限期地处于空闲状态 -->
    </ehcache>

    配置文件详解

    <!--timeToIdleSeconds 当缓存闲置n秒后销毁 --> 
    <!--timeToLiveSeconds 当缓存存活n秒后销毁 --> 
    <!-- 
    缓存配置 
           name:缓存名称。 
           maxElementsInMemory:缓存最大个数。 
           eternal:对象是否永久有效,一但设置了,timeout将不起作用。 
           timeToIdleSeconds:设置对象在失效前的允许闲置时间(单位:秒)。仅当eternal=false对象不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大。 
           timeToLiveSeconds:设置对象在失效前允许存活时间(单位:秒)。最大时间介于创建时间和失效时间之间。仅当eternal=false对象不是永久有效时使用,默认是0.,也就是对象存活时间无穷大。 
           overflowToDisk:当内存中对象数量达到maxElementsInMemory时,Ehcache将会对象写到磁盘中。 
           diskSpoolBufferSizeMB:这个参数设置DiskStore(磁盘缓存)的缓存区大小。默认是30MB。每个Cache都应该有自己的一个缓冲区。 
           maxElementsOnDisk:硬盘最大缓存个数。 
           diskPersistent:是否缓存虚拟机重启期数据 Whether the disk store persists between restarts of the Virtual Machine. The default value is false. 
           diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认是120秒。 
           memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。默认策略是LRU(最近最少使用)。你可以设置为FIFO(先进先出)或是LFU(较少使用)。 
           clearOnFlush:内存数量最大时是否清除。 
    -->

    application.yml文件中配置如下

    在对应的方法上加上注解

    注意:这里的value值需要和ehcache.xml配置文件中<cache>标签的name属性值相对应

    注解@Cacheable的使用可参照:

    https://www.cnblogs.com/fashflying/p/6908028.html

     当第一次调用该方法时,会从数据库中查询,并将查得的结果存入Ehcache缓存中,在缓存有效时间内,调用该语句时,

    直接从缓存中获取,当缓存失效时,会再次从数据库中查询

  • 相关阅读:
    服务端测试之接口测试工具——postman
    服务端测试之接口测试初探
    项目()已配置为使用IIS Web服务器,但此计算机上...
    其他信息: 在分析完成之前就遇到流结尾。
    WPF 打开指定文件路径的文件资源管理器
    Power BI 可视化交互/视觉对象交互
    ASP.NET 前端Ajax获取数据并刷新
    异常详细信息: System.ArgumentException: 不支持关键字: “metadata”。
    设计模式→单例模式
    <转>记dynamic的一个小坑 -- RuntimeBinderException:“object”未包含“xxx”的定义
  • 原文地址:https://www.cnblogs.com/java-spring/p/8602215.html
Copyright © 2011-2022 走看看