1 / 5
文档名称:

缓存详解.doc

格式:doc   页数:5页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

缓存详解.doc

上传人:yjjg0025 2015/6/4 文件大小:0 KB

下载得到文件列表

缓存详解.doc

相关文档

文档介绍

文档介绍:什么是缓存?
缓存就是用来避免频繁的到主存储器(一般来说可能是数据库,结构化的磁盘文件,远程网络接口,程序接口等等提供数据返回的)获取数据而建立的一个存取更快的临时存储器(缓存)。一般来说,缓存比主存储器更小(不一定,也可能是存储的数据结构不一样,但是存取速度非常快),但是存储的容量也比较小,但是存取速度非常快。
缓存的作用
缓存一般用来
.存储频繁访问的数据
.临时存储耗时的计算结果
.内存缓存减少磁盘IO
缓存类型
在WEB开发中,缓存可以分为:
数据库端缓存
这个可以用以“空间换时间”来说。比如建一个表来存储另外一个表某个类型的数据的总条数,在每次更新数据的时候同时更新数据表和统计条数的表。在需要获取某个类型的数据的条数的时候,就不需要select count去查询,直接查询统计表就可以了,这样可以提高查询的速度和数据库的性能。
应用层缓存
应用层缓存这块跟开发人员关系最大,也是平时经常接触的。
.缓存数据库的查询结果,减少数据的压力。这个在大型网站是必须做的。
.缓存磁盘文件的数据。比如常用的数据可以放到内存,不用每次都去读取磁盘,特别是密集计算的程序,比如中文分词的词库。
.缓存某个耗时的计算操作,比如数据统计。
应用层缓存的架构也可以分几种:
.嵌入式,也就是缓存和应用在同一个机器。比如单机的文件缓存,java中用hashMap来缓存数据等等。这种缓存速度快,没有网络消耗。
.分布式缓存,把缓存的数据独立到不同的机器,通过网络来请求数据,比如常用的memcache就是这一类。
分布式缓存一般可以分为几种:
.按应用切分数据到不同的缓存服务器,这是一种比较简单和实用的方式。
.按照某种规则(hash,路由等等)把数据存储到不同的缓存服务器
.代理模式,应用在获取数据的时候都由代理透明的处理,缓存机制有***来处理
前端缓存
我们这里说的前端缓存可以理解为一般使用的cdn技术,利用squid等做前端缓冲技术,主要还是针对静态文件类型,比如图片,css,js,html等静态文件。
客户端缓存
浏览器端的缓存,可以让用户请求一次之后,下一次不在从服务器端请求数据,直接从本地缓存读取,可以减轻服务器负担也可以加快用户的访问速度。
缓存的更新和过期
我们这几只讲应用层的缓存。在应用层的缓存由于应经有新的数据加入,数据的修改,数据的删除等等操作,而在某些时间,我们需要这些操作及时的生效(由于用了缓存,可能会导致修改后缓存没有更新,而页面也没有变化),所以出现缓存的更新和过期的概念。
缓存的过期
缓存的过期包含
.时间过期
我们在缓存数据的时候我们可以指定数据缓存的最大时间,如果超过这个时间,我们就认为缓存是失效的。
.基于规则的过期
我们在缓存中存储了某些数据来标明数据的版本。比如存取的时间,更新的时间,数据的版本信息等等。
然后比较这些信息是否有变化来判断是否过期。
缓存的更新
.被动
当缓存失效的时候我们的应用程序重新从主存储器中取数据,然后重新放回缓存中。
.主动
当数据一更新的时候,我们的应用主动的去更新我们的缓存内容。
.被动和主动结合(基于版本)
当数据以更新的时候,我们更新一个数据被更新的标志。然后根据上面讲到的“基于规则的过期”来更新数据。