应用服务器性能优化之分布式缓存-缓存基础

  应用服务器就是处理网站应用的服务器,网站的业务代码都部署在这里,是网站开发最复杂,变化最多同时也是最重要、最基础的地方。可以说没有应用服务器就没有网站。

  在我们介绍分布式缓存之前,因为考虑到很多览客和当初的我一样,对于什么是应用服务器,分布式缓存是什么样的概念都不清楚,所以我们就一步一步来,从基本的概念说起。

1、缓存基本原理

  所谓的缓存是指将数据存储在相对访问速度较高的介质中,以供系统处理。一方面缓存访问速度快,可以减少数据的访问时间,另一方面如果缓存的数据是经过计算得到的,那么缓存的数据就无需重复计算即可使用,因此缓存还能起到减少计算时间的作用。

  缓存的本质是一个内存hash表,网站应用中,数据缓存是以键值对(Key,Value)的形式存储在Hash表(不知道hash表的自行脑补)中。

  

  在需要读取Hash表中的数据时,首先需要提供键值对中的Key值,通过hash函数计算Key值的HashCode对应的Hash表索引,通过该索引可以快速的访问Hash表中的数据。

  缓存主要用来存放哪些读写比较频繁,很少变化的数据,如热点词汇,商品类目等。应用程序读取数据时,先到缓存中读取,如果缓存中读取不到或者数据失效,再访问数据库,并将数据写入缓存。

2、合理使用缓存

  使用缓存对提高系统性能有很多好处,但是缓存使用不合理非但不能提高系统性能,反而会造成系统的累赘。

  如果缓存中使用的数据频繁修改,就会导致数据写入缓存后,应用还没来得及读取数据,数据就已经失效的情形,徒增系统的负担。在一般情况下,数据的读写比应该在2:1以上(写入一次缓存,在数据更新之前至少读取两次),缓存才有意义。

  缓存是使用内存作为存储介质,但是在系统当中,内存的资源时非常宝贵的,不可能将所有的数据都缓存起来,只能将最近访问的数据缓存起来,而将历史数据挤出缓存。如果缓存的数据没有热点,不遵循缓存的二八定律,那么缓存就没有意义。

  一般会对缓存的数据设置失效时间,一旦超过失效时间,就要从数据库中重新加载数据。因此应用需要容忍一段时间的数据不一致。在互联网应用中,这种延迟通常是可以接受的,但是具体应用也需要慎重的对待(视情况定位哪些数据可以缓存,哪些不可以)。

  

时间: 2024-08-29 09:02:30

应用服务器性能优化之分布式缓存-缓存基础的相关文章

应用服务器性能优化之分布式缓存-分布式缓存架构

分布式缓存是指缓存部署在多个服务器组成的服务器集群中,以集群的方式提供缓存服务,其架构方式主要有两种,一种是以JBoss Cache为代表的需要同步更新的分布式缓存,一种是以Memchached为代表的互不通信的分布式缓存. 1.JBoss Cache Jboss Cache的分布式缓存在集群中的每一台服务器都缓存相同的数据,当集群中的某台服务器的缓存数据更新时,会通知集群中的其他服务器更新或者清除缓存.JBoss Cache通常将应用程序和缓存部署在同一台服务器上,应用程序可以从本地快速获取缓

报表性能优化方案之数据集缓存与共享

1. 问题描述 对于大数据量报表,若每次直接从数据库中查询数据,不仅增加数据库服务器的压力,也极大的影响了取数的速度从而降低了报表的执行速度,为此FineReport提供了数据集缓存与共享功能. FineReport可先将其数据集查询的结果缓存下来,对于缓存下来的数据,再次使用到相同数据集时,无需再次连接数据库重新查询数据,直接使用缓存下来的结果,即使用FineReport的数据集共享机制,达到资源复用,减少取数时间从而提高了报表的展现速度. 2. 数据集缓存 缓存分为缓存至内存和缓存至磁盘.

网站的高性能架构---应用服务器性能优化

应用服务器就是处理网站业务的服务器,网站的业务代码都部署在这里,是网站开发最复杂,变化最多的地方,优化手段主要有缓存.集群和异步等. 分布式缓存 缓存无处不在,既存在于浏览器.也存在于服务器和数据库:既可以对数据缓存,也可以对文件缓存,还可以对页面片段进行缓存. 网站性能优化第一定律:优先考虑使用缓存优化性能. 缓存的基本原理 缓存是指将数据存储在相对较高访问速度的存储介质中.一方面缓存访问熟读快,可以减少访问时间:另一方面如果缓存的数据是经过计算处理得到的,那么被缓存的数据无需重复计算即可直接

性能优化——应用服务器性能优化

核心知识点: 网站性能优化第一定律:优先使用缓存. 1.分布式缓存 (1)缓存原理 a.什么是缓存?(将数据存储在相对较高访问速度的介质中,以供系统处理) b.缓存的优点:访问速度快,如果需要计算可以减少计算时间 c.缓存的本质是一张以键值对存储的内存hash表 d.主要用来存储:读写比例高,很少变化的数据 e.网站的访问遵循28定律 (2)合理使用缓存应该注意以下问题 a.频繁更新的数据(数据还没有读就已经失效,一般要求读写比在2:1以上才有意义) b.没有热点数据(无疑浪费资源) c.数据不

[转]Android性能优化之ListView的缓存机制

要想优化ListView首先要了解它的工作原理,列表的显示需要三个元素:ListView.Adapter.显示的数据: 这里的Adapter就是用到了适配器模式,不管传入的是什么View在ListView中都能显示出来. 下面简单说下上图的原理: 1.如果你有几千几万甚至更多的选项(item)时,其中只有可见的项目(满屏显示的Item数目)存在内存(说的优化就是说在内存中的优化!)中,其他的在Recycler中 2.ListView先请求一个type1视图(getView)然后请求其他可见的项目

web性能优化:详说浏览器缓存

前言 在前端开发中,缓存有利于加快网页的加载速度,同时缓存能够被反复利用,所以可以减少流量和带宽的开销. 缓存的分类有很多种,CDN缓存.数据库缓存.代理服务器缓存和浏览器缓存.本篇将来讲解一下Web开发中的浏览器缓存.这个在实际开发环境中往往也会被问到,或者使用到.如何去准确认清楚缓存的概念,是前端必须要去学习的 今天在做项目的优化的时候,使用chrome开发者工具的network发现了细节: 虽然这两个看起来都是从缓存中读取,但还是有一些不一样的! 首先什么是缓存吧 平时生活当中缓存一集电视

asp.net性能优化之使用Redis缓存(入门)

1:使用Redis缓存的优化思路 redis的使用场景很多,仅说下本人所用的一个场景: 1.1对于大量的数据读取,为了缓解数据库的压力将一些不经常变化的而又读取频繁的数据存入redis缓存 大致思路如下:执行一个查询 1.2首先判断缓存中是否存在,如存在直接从Redis缓存中获取. 1.3如果Redis缓存中不存在,实时读取数据库数据,同时写入缓存(并设定缓存失效的时间). 1.4缺点,如果直接修改了数据库的数据而又没有更新缓存,在缓存失效的时间内将导致读取的Redis缓存是错误的数据. 2:R

Android性能优化之实现双缓存的图片异步加载工具(LruCache+SoftReference) - 拿来即用

之前在郭大神的博客看到使用LruCache算法实现图片缓存的.这里仿效他的思路,自己也写了一个. 并加入ConcurrentHashMap<String, SoftReference<Bitmap>>去实现二级缓存,因为ConcurrentHashMap是多个锁的线程安全,支持高并发.很适合这种频繁访问读取内存的操作. 下面整个思路是,使用了系统提供的LruCache类做一级缓存, 大小为运行内存的1/8,当LruCache容量要满的时候,会自动将系统移除的图片放到二级缓存中,但为

报表性能优化方案之报表缓存路径

1. 问题描述 若启用了磁盘缓存,默认的会在C:\Documents and Settings\Administrator\.FineReport80(windows下)下创建cache即缓存文件夹,一般呢,C盘的空间会很小,如保存在C盘会增加对C盘的压力,那么有没有方法让其保存到别的盘符下呢? 解决方案提供工具:报表开发工具FineReport. 2. 解决方案 通过修改%FR_HOME%\WebReport\WEB-INF\resources\目录下的cache.xml文件(报表管理平台中设