大话缓存

一. 前言

  说起缓存,业内有句话,架构师有一半以上的时间是在和缓存打交道。那么缓存到底是什么呢?又有什么作用呢?该系列将揭开缓存神秘的面纱,从零开始,由浅入深,细究各类缓存。

  缓存我个人理解,是利用空间换时间最好的体现,将一些耗时操作(复杂的数据库查询、文件内容的读取)、不经常改变的数据(比如商城的商品大类别),放到缓存(内存)里,提高了访问速度。比如我们很常见的一个例子,某某知名网站的某个页面,可能再特殊情况下,该页面1分钟会有100w次访问量,那就意味着访问了100w次数据库,我的天!忽略服务器端是否会挂掉的问题,假设不挂掉,那么也是需要强大的结构来支持(什么分布式部署、数据主从配置之类),成本巨大;这时如果第一个人访问的时候,我把该页面缓存起来,那么后面的999999次访问都是从缓存中获取,实际上相当于1分钟只访问了一次数据库,性能差别可想而知。

  从我上面举得例子中,我们很容易能看出来,缓存最大的优势:节约时间、提高性能

那么你可能会问,缓存有这么大的好处,我们是不是数据都可以放到缓存里,来提高性能呢?答案是肯定的:不能!万物都有两面性,有利必有弊,细心的人,会从从上面的例子中发现,我将商品的类别缓存起来,但是商品的类别是肯定会更新的,更新了怎么办? 这时候引出一个词语“缓存过期时间”,意味着我们可以设置缓存的过期时间,一旦缓存过期,将重新获取数据,进行更新。你可能还会问,缓存过期时间设置为多少合适呢?如果缓存还没过期,商品类别的信息已经更新了,那么怎么办呢? 解决这个问题,需要引出一个新的词语“缓存依赖”,缓存可以依赖:文件、文件夹、数据库,依赖项一旦发生变化了,缓存立即更新

下面我们总结一下缓存好处和弊端:

 好处:访问速度快,提高了并发访问返回速率的时间。

     弊端:数据放到内存里,失去了及时性。(可以通过缓存依赖解决)

     我们什么情况下适合用缓存呢?

(1). 查询多,修改少的数据。

(2). 信息要求不是很及时,允许适当的延迟。

(3). 复杂的计算、远程接口、长时间的查询。

(4). 高并发,但如果数据量太大,高并发太高,单纯的服务器数据缓存是满足不了的,需要引入分布式缓存(NoSql)。

二. 前端缓存

  读了“前言”,你可能对缓存的概念有了一定了解,但是细心的人可能会更疑惑,因为他在生活中发现了这样几个现象,在手机上装了一个应用,比如QQ,初次安装时可能100M左右,但随着使用,一个月后,发现,我的天,竟然1G了,在QQ的设置页面里,有个选项,叫“清空缓存数据”,如下图:

  点击进行清空后,发现QQ所占的空间又变小了,这里也称作缓存,但是你可能会发现,在前言中提到,缓存是存在服务器内存中的,那么为什么本地的空间后变大呢,

时间: 2024-09-29 05:37:03

大话缓存的相关文章

大话PHP缓存头

304的请求机制和200有什么不一样呢?在fiddler中查看304请求的时候突然想到这个问题,就想到研究下这个304请求机制了. 我们自己在nginx上放一个文件,test.png.可以使用下面的地址进行访问: http://test.yejianfeng.com/test.png   nginx配置文件如下: 这个的etag关闭是由于nginx默认是开启etag的,说明见ngx_http_core_module(http://nginx.org/en/docs/http/ngx_http_c

大话redis/memcache缓存

一.Memcache特性1. memecache 把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小redis有部份存在硬盘上,这样能保证数据的持久性.2. Memcache使用了Slab Allocator的内存分配机制:按照预先规定的大小,将分配的内存分割成特定长度的块,以完全解决内存碎片问题.3. memcache 存在内存中,分配的内存满后,会按一定的规则删除一些k/v数据,重启后自然全部丢失.4. 过期策略--memcache在set时就指定,例如set key1 0 0 8,

缓存篇(Cache)~大话开篇

闲话杂淡 想写这篇文章很久了,但总是感觉内功还不太够,总觉得,要写这种编程领域里的心法(内功)的文章,需要有足够的实践,需要对具体领域非常了解,才能写出来.如今,感觉自己有写这种文章的能力了,所以,快马加鞭,把这个内功写出来,分享给大家,分享我的Fans! 缓存:缓存的领域很广泛,实现方法也很多,你可以使用文件,内存来实现缓存,而缓存的方法也有很多,对于一个网页来说,你可以缓存它的页面内容(HTML),或者缓存它的数据集(DataSet),这两种方式适用于不同的场合,对于需要主动触发的缓存,它可

浏览器缓存机制浅析

非HTTP协议定义的缓存机制 浏览器缓存机制,其实主要就是HTTP协议定义的缓存机制(如: Expires: Cache-control等).但是也有非HTTP协议定义的缓存机制,如使用HTML Meta 标签,Web开发者可以在HTML页面的<head>节点中加入<meta>标签,代码如下: <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 上述代码的作用是告诉浏览器当前页面不被缓存,每

疯狂Java学习笔记(72)-----------大话程序猿面试

大话程序猿面试 10个我最喜欢问程序猿的面试问题 程序猿面试不全然指南 10个经典的C语言面试基础算法及代码 程序猿的10大成功面试技巧 程序猿选择公司的8个标准 编程开发 8个值得关注的PHP安全函数 简析TCP的三次握手与四次分手 10分钟掌握XML.JSON及其解析 高效的jQuery代码编写技巧总结 编译器的工作过程和原理 CPU空暇时在"忙"什么 5个强大的Java分布式缓存框架推荐 架构设计 趣味漫画:云计算的起源 负载均衡调度算法大全 程序人生 程序猿不不过写代码 201

我心中的核心组件(可插拔的AOP)~大话开篇及目录

我心中的核心组件(可插拔的AOP)~大话开篇及目录 http://www.cnblogs.com/lori/p/3247905.html 回到占占推荐博客索引 核心组件 我心中的核心组件,核心组件就是我认为在项目中比较常用的功能,如日志,异常处理,消息,邮件,队列服务,调度,缓存,持久化,分布式文件存储,NoSQL存储,IoC容器,方法拦截等等. 对于以上内容可以说即是一个大餐,又是一个挑战,就让我带着大家去迎接这份挑战吧,呵呵! 可插拔的AOP AOP即面向切面的编程,是指将一个公用的与领域无

【转】大话程序猿眼里的高并发架构

原文: http://blog.thankbabe.com/2016/09/14/high-concurrency-scheme/?from=sf 前言 高并发经常会发生在有大活跃用户量,用户高聚集的业务场景中,如:秒杀活动,定时领取红包等.为了让业务可以流畅的运行并且给用户一个好的交互体验,我们需要根据业务场景预估达到的并发量等因素,来设计适合自己业务场景的高并发处理方案. 在电商相关产品开发的这些年,我有幸的遇到了并发下的各种坑,这一路摸爬滚打过来有着不少的血泪史,这里进行的总结,作为自己的

【转】大话程序猿眼里的高并发

原文: http://blog.thankbabe.com/2016/04/01/high-concurrency/ 大话程序猿眼里的高并发 2016-04-01 YYQ 高并发 高并发  负载均衡  并发  锁  事务  集群 高并发是指在同一个时间点,有很多用户同时的访问URL地址,比如:淘宝的双11,双12,就会产生高并发,如贴吧的爆吧,就是恶意的高并发请求,也就是DDOS攻击,再屌丝点的说法就像玩撸啊撸被ADC暴击了一样,那伤害你懂得(如果你看懂了,这个说法说明是正在奔向人生巅峰的屌丝.

大话存储 2 - 磁盘原理与技术详解

磁盘大致由盘片.读写头.马达.底座.电路板等几大项组合而成. 磁头运行时距离磁盘表面的高度由下图可以随意感受一下: 1 磁盘上的数据组织 磁盘在逻辑上被划分为磁道.柱面以及扇区. 启停区:每个盘片的每个面都有一个读写磁头,磁头期初停在盘片的最内圈,即线速度最小的地方.这是一个特殊区域,它不存放任何数据. 0磁道:在最外圈,离主轴最远的地方是0磁道,硬盘数据的存放就是从最外圈开始的.有一个0磁道检测器,由它来完成硬盘的初始定位. 0磁道存放着用于操作系统启动所必需的程序代码,因为PC启动后BIOS