使用ehcache缓存进行优化

上面的操作我们已经可以在每个页面上查看到分类信息了,但是只要切换一次页面就会查询一下数据库,增加服务器的压力,对于数据不经常变化的情况,我们可以使用缓存技术(缓存是放在内存中,当需要使用的时候从缓存中查找,如果有则直接返回,如果没有再去数据库中查询)。
常见的缓存技术:

  • ehcache
  • memcache
  • redis

这里我们使用ehcache,hibernate中底层就使用了ehcache,实际开发中redis使用率较高,效果更高。

ehcache使用步骤:

  1. 导入jar包
  2. 编写配置文件
  3. 使用API(获取数据先从缓存中获取,若获取的值为空,再去查询数据库,将数据放入缓存中)

1)导入jar包和配置文件

① jar包

② 把ehcache.xml导入到src下

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd"><diskStore path="C:/ehcache"/><!--默认缓存配置,以下属性是必须的:name :cache的标识符,在一个CacheManager中必须唯一。maxElementsInMemory : 在内存中缓存的element的最大数目。maxElementsOnDisk : 在磁盘上缓存的element的最大数目。eternal : 设定缓存的elements是否有有效期。如果为true,timeouts属性被忽略。overflowToDisk : 设定当内存缓存溢出的时候是否将过期的element缓存到磁盘上。以下属性是可选的:timeToIdleSeconds : 缓存element在过期前的空闲时间。timeToLiveSeconds : 缓存element的有效生命期。diskPersistent : 在VM重启的时候是否持久化磁盘缓存,默认是false。diskExpiryThreadIntervalSeconds : 磁盘缓存的清理线程运行间隔,默认是120秒.memoryStoreEvictionPolicy : 当内存缓存达到最大,有新的element加入的时候,移除缓存中element的策略。默认是LRU,可选的有LFU和FIFO--><cachename="categoryCache"maxElementsInMemory="10000"eternal="false"timeToIdleSeconds="120"timeToLiveSeconds="120"overflowToDisk="true"maxElementsOnDisk="10000000"diskPersistent="false"diskExpiryThreadIntervalSeconds="120"memoryStoreEvictionPolicy="LRU"/>
</ehcache>

ehcache缓存的3种清空策略:

  1. FIFO,先进先出
  2. LFU,最少被使用,缓存的元素有一个hit属性,hit值最小的将会被清出缓存。
  3. LRU,最近最少使用的,缓存的元素有一个时间戳,当缓存容量满了,而又需要腾出地方来缓存新的元素的时候,那么现有缓存元素中时间戳离当前时间最远的元素将被清出缓存。

2)在service业务层完成

@Override
public List<Category> findAll()  throws Exception{//1、创建缓存管理器CacheManager cm=CacheManager.create(CategoryServiceImpl.class.getClassLoader().getResourceAsStream("ehcache.xml"));//2、获取指定的缓存Cache cache=cm.getCache("categoryCache");//3、通过缓存获取数据Element element=cache.get("clist");List<Category> list=null;//4、判断数据if(element==null) {//从数据库中获取list=categoryDao.findAll();//将list放入缓存cache.put(new Element("clist",list));System.out.println("缓存中没有数据,已从数据库中获取");}else {//直接返回list=(List<Category>) element.getObjectValue();System.out.println("缓存中有数据");}return list;
}

3)测试

先点击首页,查看后台:

在点击登录,查看后台:

11_使用ehcache缓存进行商品分类展示优化相关推荐

  1. Hibernate性能优化之EHCache缓存

    像Hibernate这种ORM框架,相较于JDBC操作,需要有更复杂的机制来实现映射.对象状态管理等,因此在性能和效率上有一定的损耗. 在保证避免映射产生低效的SQL操作外,缓存是提升Hibernat ...

  2. ehcache缓存配置说明

    系统性能缓存配置文件说明: 配置文件ehcache.xml中命名为demoCache的缓存配置: <cache name="demoCache" maxElementsInM ...

  3. 转 如何利用客户端缓存对网站进行优化?

    你的网站在并发访问很大并且无法承受压力的情况下,你会选择如何优化?          很多人首先会想从服务器缓存方面着手对程序进行优化,许多不同的服务器缓存 方式都有他们自己的特点,像我曾经参与的一些 ...

  4. Spring Boot 2.x基础教程:使用EhCache缓存集群

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 上一篇我们介绍了在Spring Boot中整合EhCac ...

  5. mybatis配置ehcache缓存

    1:在spring配置文件中加载缓存配置文件 <!-- 使用ehcache缓存 --> <bean id="ehCacheManager" class=" ...

  6. Ehcache 缓存监控配置

    监控 ehcache缓存: 1,下载: http://terracotta.org/downloads/open-source/destination?name=ehcache-monitor-kit ...

  7. Ehcache 缓存

    1 package org.jeecgframework.core.util; 2 3 import net.sf.ehcache.Cache; 4 import net.sf.ehcache.Cac ...

  8. shiro教程:整合ehcache缓存

    这个是在ssm的基础上再去整合shiro和ehcache的,整合ehcache主要是为了减少后台shiro拦截的次数,因为如果我们不使用缓存的话,后台shiro的认证和授权的拦截器就会反复的进行拦截, ...

  9. 每周一起读 × 招募 | WWW 2019:基于层次化强化学习的多源搜索展示优化

    "每周一起读"是由 PaperWeekly 发起的论文共读活动,我们结合自然语言处理.计算机视觉和机器学习等领域的顶会论文和前沿成果来指定每期论文,并且邀请论文作者来到现场,和大家 ...

  10. javaweb项目搭建ehcache缓存系统

    转载自  javaweb项目搭建ehcache缓存系统 EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认的CacheProvider,同时在项目开发中 ...

最新文章

  1. hdu2973 YAPTCHA
  2. 文本编辑器创建工具栏
  3. javascript中动态添加事件
  4. ANSYS——常见梁的后处理方法(弯曲应力、弯矩、轴力等的显示)
  5. 网络工程师第五站-有线、无线同网段混合组网(多FAT案例)
  6. 事物 php,什么是php事务
  7. 计算机科学导论数据运算,补基础:自学:计算机科学导论 第四章 数据运算(示例代码)...
  8. 【C语言进阶】C语言实现通讯录(简易版)
  9. 腾讯云安装宝塔面板详细教程
  10. Loadrunner脚本录制执行
  11. 服务器python环境安装
  12. 第二章 试验资料的整理与特征数的计算
  13. windows 批量 jpg 转 bmp 方法
  14. 曝NV或将推出新一代Titan显卡:48G显存 功率高达900W
  15. 微信小程序(uniapp)获取用户位置信息及选择位置
  16. JS中常用的判断函数
  17. thinkphp项目_简历网站
  18. css3 动画之 2D旋转 3D旋转 放大
  19. 互联网企业使用云计算,有什么优势?
  20. 电池pack结构_一种锂电池PACK组装结构的制作方法

热门文章

  1. 刷算法题必备的基础数论知识
  2. 对Map集合排序,先对value降序,value相同的情况下,key升序
  3. cv python 画直线_Python进阶之Matplotlib入门(一)
  4. mysql的数据库的索引_MySql数据库索引原理
  5. 项目管理的前路怎么样?PMP证书作用如何?
  6. 测试的目的、时期、分类
  7. robotframe处理日志中文问题
  8. 软件需求分析(补发)
  9. Python1 关于安装
  10. Asp.Net服务器控件添加OnClientClick属性绑定