缓存在互联网平台大量使用以提高性能,降低数据库负担,更快的响应用户的请求。原因主要是缓存的使用场景是性能要求高,实时性或准确性要求稍差。
其他提高性能手段:
1, 数据库方面改革,效果最明显。如主从服务器。数据库水平和垂直拆分(一般用户表不能拆分)。数据库索引,全文索引。数据库是否用事务表,慢查询监控
2, Lucene,蜘蛛的使用,利用文件索引减少查询数据库
3, Web服务器或应用服务器选择及负载均衡。 Tomcat,resin,jboss.,weblogic
4, 图片服务器和web服务器分离,可以是多个。图片标记,多种图片格式,图片名称和用户分离,名称变得无规则
5, Cs,js等的压缩,减少流量,并可能到客户端一部分信息
6, 登陆或瓶颈模块设计的不同。验证码或多步登陆。很多网站长期没改进,可能在对抗性能瓶颈。大规模改版风险很大。在什么时候升级系统
7, 程序角度:架构选择(如Facebook,API,GOOGLE,API),多线程的使用(单实例多线程,主线程子线程),代码算法结构,
数据结构
容器概念内置对象:page,session,application
使用Cache,可以缓存网页,提高浏览速度,还可以缓存任何对象和数据,减少对数据库的操作。Session可以存储对象,但是必须使用Session,但是对于Sesion,并不是任何情况下都是需要的;Application可以存储对象,但是生存周期太长,从而决定了不可以存储对象太多;所以有了Cache,它可以不涉及使用Session,又有自己的生存周期,可以比起Application来,相对大量的使用。
在信息系统建设过程中我们通常会遇到这样的问题: 1. 基础数据的变更问题 信息系统中需要处理的基础数据的内容短时间内是不会发生变化的,但是在一个相对长一些的时间里,它却可能是动态增加或者减少的。 举个例子:电子商务中关于送货区域的定义,可能短时间内不会发生变化,但是随着电子商务企业业务的扩大,系统中需要处理的送货区域就可能增加。所以我们的系 统中不得不在每次向客户展示送货区域信息的时候都和数据库(假设送货区域信息保存在数据库中,这也是通常采用的处理方法)进行交互。
2. 统计报表(不仅限于统计报表)的问题 一般来说,统计报表是一个周期性的工作,可能是半个月、一个月或者更长的时间才会需要更新一次,然而统计报表通常是图形显示或者是生成pdf、word、excel等格式的文件,这些图形内容、文件的生成通常需要消耗很多的系统资源,给系统运行造成很大的负担。 1.2 抽象出的缓存使用的共同点 通过比较分析,不难发现这两类问题有一些共同点: 1、被处理的内容短时间不变,所以短时间内可以作为静态内容进行处理 2、在一个不太长的时间内,被处理的内容可能或者必定产生变化,所以必须将他们作为动态内容进行处理 3、实时性要求不高:在合理的时间区段内可以忽略被处理内容变化后带来的影响 4、对这些内容的处理动作比较消耗系统性能,影响系统响应时间
在开源项目的出镜率和关注率比较高的Cache:memcached,JBoss Cache, OSCache,EHCache等。
以下是Cache的基本特性,大部分Cache都有相应的API支持。
♦ 时间记录 数据进入Cache的时间。
♦ timeout过期时间 Cache里面的数据多久过期 (与清除策略的区分,一个缓存快到期突然最后访问了一次,会不会过期,区分点是清除策略的作用前提,理论上没到期也可能被清除出去,到期肯定被清除)
♦ Eviction Policy 清除策略 Cache满了之后,根据什么策略,应该清除哪些数据。 比如,最不经常被访问的数据,最久没有访问到的数据。
♦ 命中率 Cache的数据被选中的比率 (访问多少次,cache使用多少次)
♦ 分级Cache 有些Cache有分级的概念。比如,几乎所有的Cache都支持Region分区的概念。可以指定某一类的数据存放在特定的Region里面。JBoss Cache可以支持更多的级别(有待研究)。
♦ 分布式Cache 分布在不同计算机上的Cache
♦ 锁,事务,数据同步 一些Cache提供了完善的锁,事务支持。
Memcached与Oscache的朴素区分及各自特点
部署不同,memcache一般跟web服务器不在同一主机,当然也可以在同一主机,利用的是资源互补原理。 对内存要求很高,对cpu要求稍低。Oscache与web服务器在同一台。
从作用的层来说,对memcache各层都可以支持。Oscache大多数用于web层,其实也支持biz层,一般不用
Memcache的特点: 分布式内存对象缓存系统,占用其他机子的内存。很多互联网,负载均衡三台(以三台为例)web服务器可以共享一台Memcache的资源。传递的信息以键值对的形式存储。传递的数据要实现序列化。
Oscache的特点: 页面级缓存,占用本机的内存资源。可以选择缓存到硬盘,如存取到硬盘重启服务也可重新获得上次持久化的资源,而如果缓存到内存就不行。一般没必要缓存到硬盘,因为I/O操作也是比较耗资源,和从数据库取往往优势很小。Oscache存取数据的作用域分为application和session两种。
参考oscache的帮助资料猜想它的实现原理是把要存储共享的资源的作用域分为应用程序全局共享application(对性能优化作用很明显)和某个用户某次操作某个网站session(用户和web服务器会话)级共享两种。对共享的资源设置过期时间。即当服务器运行时发现在
作用域内还有对象,就以类似静态页面的形式(因为缓存了要显示的信息)提供给客户端,当过期了,就需要重查资源(如果是页面里的缓存就需要资源能在jsp里提供)。如果没有过期,但内容改变了,可以通过flush的方式清除老资源以便加载新的资源。Oscache页面级缓存可缓存jsp,需要改变web.xml配置文件,里面可以设定缓存的作用域和过期时间.关于页面级缓存action,资料比较少,新的oscache已经解决了struts 的缓存问题,但最大的问题是MVC模式中, 是先取数据, 取出来后,再放到网页上显示, 如果在网页上用KEY, 应该起不到作用. 因为取出数据在KEY标签之前执行.究其原因主要是因为缓存实际上缓存的是输出信息,即使jsp也是输出信息。不过把jsp当作独立的运行单元一起缓存。 因为毕竟有作用域,那么在action里优势就可以有其他方式解决。这一块在用了memcache后用oscache就没有太大用处.
Oscache的一个特点是在没有过期时,jsp里的运行单元不依赖于输入参数,如果依赖,那么缓存就没有作用了,如果用了可以取数据的memcache时使用场景比较小。当然如果不使用memcache,使用场景就比较大
分享到:
相关推荐
五、osCache与其他缓存方案的比较 osCache虽然功能强大,但在Java缓存领域,还有其他如EHCache、Memcached和Redis等解决方案。每种缓存都有其特点和适用场景,比如EHCache同样适用于本地缓存,而Memcached和Redis更...
OSCache虽然不直接支持分布式缓存,但可以通过与其他分布式缓存服务(如Redis、Memcached)结合使用来实现。 总结起来,OSCache作为一款强大的缓存工具,为Java开发者提供了便捷的页面缓存功能。通过合理配置和编程...
2. **分布式缓存**:虽然OSCache本身不支持分布式缓存,但可以通过与其他分布式缓存系统如Memcached或Redis集成,实现跨服务器的缓存共享。 3. **数据预加载**:在系统启动时,可以预先加载一部分关键数据到缓存,...
- **对比Memcached**:Memcached是分布式内存对象缓存系统,适用于大型分布式系统,而Oscache主要用于单机应用,且主要关注Java环境。 6. **最佳实践** - **合理设置缓存大小**:根据实际需求和服务器资源,合理...
1、 MemCache介绍 2、 MemCache工作原理 ...5、 MemCache与OsCache的区别 6、 MemCache在windows下服务端的安装 7、 MemCache在Linux下服务端的安装 8 Linux下telnet的配置及memcache监测 9、 MemCache客户端的使用
缓存技术有多种,常见的缓存技术包括 OScache、Memcached、Redis 等。OSCache 是一种流行的缓存技术,广泛应用于 Java 开发中。Memcached 是一种高性能的缓存系统,广泛应用于大型网站中。 MySQL 缓存解决方案 ...
4. Java缓存_project:这个文件夹可能包含了上述所有缓存技术的实际应用项目,可能是一个整合了Ehcache、Memcached和OSCache的示例应用。开发者可能在这些项目中比较了不同缓存系统的性能,或者展示了如何根据应用...
8. 缓存技术浅谈.ppt:这是一个关于缓存技术的概述,可能包含了多种缓存策略和实现,如Redis、Memcached等,与Hibernate缓存相辅相成。 9. 高并发高负载系统架构.ppt:这份演示文稿可能探讨了如何构建能够处理大规模...
IOIF以EXTJS为前端,以Spring、Struts、Hibernate为后端,整合了Proxool、Log4j、Quartz、Oscache、Castor、Memcached、redis等优秀的开源软件。 支持Tomcat6及Resin3等应用服务器,支持Oracle、MYSQL等数据库。IOIF...
2. **Memcached与OSCache的区别**: Memcached是一个高性能的分布式内存对象缓存系统,用于减少数据库负载。它不提供持久化机制,但速度极快,适合短期缓存。OSCache是Java的本地缓存解决方案,提供了更多的缓存...
操作系统磁盘缓存 减少磁盘机械操作 数据库缓存 减少文件系统I/O 应用程序缓存 减少对数据库的查询 Web服务器缓存 减少应用服务器请求 客户端浏览器缓存 减少对网站的访问
这是用于memcached的taglib,几乎与oscache的taglib完全兼容。 如果使用oscache taglibs作为缓存引擎,则几乎不需要修改任何jsp代码即可更改为最佳的缓存系统memcached。
该压缩包中有一个WORD和一个PPT,WORD中介绍...PPT中介绍了缓存体系,JVM内存模型,JCONSOLE监控工具的使用,Oscache缓存架构 Ehcache缓存架构 Memcached缓存架构 JiveCache缓存架构 Terracotta JVM级缓存架构等相关技术
3)采用Oscache实现页面缓存,采用Memcached实现数据缓存 4)采用独立的图片服务器集群来实现图片资源的存储及WEB请求 2.1.3数据存储的设计思路 1)数据库拆分,把生产数据库和查询数据库分离,对生产数据库采用RAC实现...
- **缓存**: oscache,ehcache,Memcached等。 - **调度**: Quartz,Java Timer Scheduler,Spring Scheduler。 - **连接池**: dbcp,c3p0等。 - **规则引擎**: jBoss Rules。 - **搜索引擎**: Lucene等。 - *...
1. **非Java实现的通用缓存产品**:如Redis、Memcached等,它们提供了高性能的缓存解决方案,适用于多种编程语言和平台。 2. **基于AJAX技术的浏览器缓存**:利用客户端浏览器的缓存机制,减少数据传输量,提高Web...
- 基于缓存(如OSCache、Redis、memcached)的Session共享 - 基于cookie的Session共享 Session复制、粘性Session和缓存集中式管理是常见的Session管理方式,各有优缺点,需根据实际情况选择。 总结,Web网站...