`
ljh2008
  • 浏览: 46626 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论

缓存在项目中的应用

阅读更多

一个项目开发完成后,我们都会进行压力测试以验证非功能性需求是否满足,如果性能无法达到要求,我们一般会从代码、数据库、集群、缓存等一些方面对系统进行优化。其中的缓存,绝对是对项目性能进行优化的一个重点。
所谓缓存,就是在系统内存区中开辟出一块单独的内存区域,把要使用的对象预先加载到这块内存区域中(或将使用过的对象放回到这块内存区域中)。如果应用需要对象时,系统先在缓存中查找要找的东西是否存在,如果没有找到,再从其它地方(如:数据库或物理磁盘)加载,显然,缓存是通过内存访问的高速性,有效地提升了整个系统的性能。
下面,我们通过一个具体的项目,向你讲述voa英语复读网 (www.fudu365.com)中缓存的使用,在复读网开发过程中,我们主要从以下几个方面考虑,来提升系统的高并发响应的:
一、系统持久层采用hibernate开发,我们自然想到了hibernate缓存。Hibernate缓存分为session级缓存与sessionFactory级缓存,而session级缓存对应用程序来说是透明的, session的生命周期比较短, session级缓存对我们的帮助不是太大。sessionFactory级缓是也是二级缓存,我们一般会使用ehcache、oscache等开源缓存框架实现。系统会在启动时将变化机率较小的数据,比如:数据字典等,预先加载出来放到二级缓存,以供程序使用。并且,我们通过对业务的跟踪,找出执行频度非常高的查询(比如:按类别对voa文章的查询),我们将这些查询放入hibernate的查询缓存,以提高性能。
二、对数据库存连接的缓存,即连接池。因为hibernate的一个session,就意味着一个数据库connection,而创建数据库连接又属于昂贵操作,因此,我们都会用数据库连接池来缓存已经得到的边接。项目中一般会采用dbcp或proxool等连接池框架,在这里,我建议大家采用proxool,它在性能及稳定性等方面均优于dbcp,而且,dbcp对mysql连接8小时过期问题非常地烦人。
三、Squid缓存页面对象,你可以从http://www.squid-cache.org/ 下载该缓存框架。复读网对众多的静态页面,全部做了缓存处理。
四、采用分布式缓存,在集群环境中,对单词翻译结果进行缓存,该缓存采用Memcached实现,这也是是根据复读网需求决定的。
在复读网中的英语在线复读机中,用户将鼠标移动到某个单词时,系统将出现该单词的发音、解释,由于当时我们没有找到翻译词库文件,因此,项目组决定从第三方翻译网站查询单词解释,将得到结果生成为WordTranslate对象,存入数据库存,同时放到memcached缓存中方便下次查询。当有另一个用户查询单词解释时,我们将首先从memchched中查找,如果没有找到,再查询数据库存返回对象,同时放入缓存,如果没有找到,再去第三方翻译网站查询。
关于Memcached的使用,请参阅我的另一篇文章。
总的来说,缓存对提高系统性能至关重要,缓存什么对象,采用什么样的缓存策略,都要根据不同的需求而定,不能一概而论,大家要根据不同的项目需求,选择最佳的缓存方案。

0
0
分享到:
评论

相关推荐

    asp.net缓存(页面输出缓存和应用程序缓存)

    在实际应用中,缓存策略需要根据业务需求进行调整。例如,可以通过设置缓存依赖来确保当数据源发生变化时自动更新缓存。另外,可以利用缓存淘汰策略(如LRU - 最近最少使用)来管理有限的内存资源。 此外,过度依赖...

    项目典型数据应用缓存的jvm之旅

    在实际应用中,我们需要防止以下三种常见问题: - 缓存穿透:当请求的数据在缓存和数据库中都不存在时,可能会对数据库造成压力。解决方法包括布隆过滤器和设置合理的缓存空值策略。 - 缓存雪崩:大量缓存同时过期...

    直接应用项目中的Android图片缓存技术

    本篇文章将详细讲解如何在实际项目中实现Android图片的三级缓存,包括内存缓存、文件缓存和网络缓存。 首先,我们需要了解为什么要使用三级缓存。在Android设备上,由于内存资源有限,图片的加载和显示需要考虑性能...

    缓存应用的实践分享,项目中实际使用

    在实际应用中,需要注意以下几点: 1. **合理设置缓存大小**:根据系统负载和资源状况调整缓存容量。 2. **缓存失效策略**:预加载、定时更新或触发式更新等方式。 3. **并发控制**:确保多线程环境下数据的一致性。...

    缓存应用程序页面和数据

    在IT领域,尤其是在Web开发中,缓存技术是提高应用程序性能的关键策略之一。...在实际开发中,根据项目需求选择合适的缓存技术和策略,同时注意缓存的维护和优化,是每个专业IT人员必须掌握的技能。

    app 缓存应用介绍

    在实际应用中,集成AppFabric缓存通常涉及以下几个步骤: 1. 安装AppFabric:可以通过Web Platform Installer或者直接从Windows Server开发者中心下载最新版本的安装包。 2. 创建命名缓存:使用Windows PowerShell的...

    ehcache项目缓存技术

    Ehcache提供了一个简单易用的API,允许开发者轻松地在应用中集成缓存功能,从而减少对数据库的依赖,提高系统性能。 二、缓存原理与优势 缓存的基本原理是将常用但计算或获取成本较高的数据存储在内存中,以便快速...

    Android应用源码之图片异步缓存两层缓存.zip项目安卓应用源码下载

    Android应用源码之图片异步缓存两层缓存.zip项目安卓应用源码下载Android应用源码之图片异步缓存两层缓存.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考

    android图片缓存有关的项目

    在Android开发中,图片缓存是一项非常重要的技术,特别是在处理大量图片展示的应用中,如社交媒体、电商应用等。本项目“android图片缓存有关的项目”旨在帮助开发者深入理解图片缓存的原理,并提供实践操作的机会。...

    SpringBoot项目 MybatisPlus使用 Redis缓存.zip

    在SpringBoot项目中,MybatisPlus与Redis的整合可以实现高效的数据缓存,提升应用程序的性能。本项目中,我们看到“SpringBoot项目 MybatisPlus使用 Redis缓存.zip”主要涉及了SpringBoot、MybatisPlus和Redis三个...

    web项目页面缓存清除,不用每次刷新浏览器

    在Web开发中,页面缓存是一个重要的概念,它涉及到用户浏览网页时的性能优化和更新体验。当浏览器加载一个网页后,为了加快后续访问速度,会将页面的静态资源(如HTML、CSS、JavaScript文件、图片等)存储在本地缓存...

    dot net memcached 分布式缓存应用类库

    这类库允许.NET开发者在他们的应用中方便地与Memcached服务器进行交互。例如,EnyimMemcached和MemcachedClientLibrary是两个常见的.NET Memcached客户端实现,它们提供了丰富的API来执行诸如存储、检索和删除缓存项...

    WPF缓存实例WPF缓存实例

    本篇将深入探讨WPF中的缓存机制,以及如何在实践中应用。 ### 一、WPF中的资源缓存 WPF允许开发者定义资源字典(ResourceDictionary),其中可以包含各种UI元素、样式、模板等,这些资源会被缓存以便重用,减少...

    ehcache缓存入门项目

    它支持本地缓存、分布式缓存以及磁盘持久化,是Java应用中的常见选择,特别是在Spring框架中。 2. **EhCache核心组件** - **Cache**: 缓存是EhCache的基本单元,它包含一组键值对。 - **Element**: Element是缓存...

    java 缓存插件ehcache 应用实例

    本文将深入探讨Ehcache在实际应用中的实例。 一、Ehcache简介 Ehcache是由Terracotta公司开发的高性能、易用的分布式缓存系统,它支持内存和磁盘存储,并且可以设置过期策略,以保证缓存数据的有效性。Ehcache不仅...

    spring简单的缓存

    在实际应用中,还需要注意防止缓存穿透(查询不存在的数据导致缓存为空)和缓存击穿(大量并发请求同一缓存失效的时刻,导致数据库压力过大)。可以通过设置合理的缓存策略,比如预加载、空值缓存等来解决这些问题...

    Android app缓存清理实现

    在Android应用开发中,缓存管理是至关重要的一个环节,它关系到应用的性能、内存使用以及用户体验。本文将深入探讨如何实现Android app的缓存清理,并基于提供的"CacheClear"压缩包文件,讲解如何封装一个获取和清理...

    一个轻量级,高性能的缓存构架,以android缓存而设计为初衷,也可以应用于一般的Java项目中。.zip

    1. **缓存原理**:解释缓存的基本概念,如LRU(Least Recently Used)最近最少使用算法,LFU(Least Frequently Used)最不经常使用算法等,以及它们在实际项目中的应用。 2. **数据结构与算法**:介绍适合实现缓存...

    THINKPHP缓存清理器

    在IT行业中,框架是开发高效应用的重要工具,...在实际开发中,应当根据项目特点和业务需求,制定合适的缓存策略,以达到最佳的性能优化效果。同时,定期清理缓存可以避免不必要的资源浪费,保持系统的高效运行。

Global site tag (gtag.js) - Google Analytics