关于缓存,就是有个东西你经常要用,但是每次找它都很麻烦,然后就把它放在一个很容易找到的地方,这样每次用的时候就方便了。
就像你买一些你喜欢吃的水果放到家里的冰箱里,以后你想吃水果的时候,可以直接从冰箱里拿,而不是去水果店买。
先说下CPU的缓存。CPU执行时所需要的指令和数据都需要从内存中取,可是,从内存中取数据会比较麻烦。那么就想到了一个办法,可不可以将常用的数据存
到方便CPU读取的地方,如果那个地方找不到,再去内存中找呢?这样,就出现了缓存。将常用的数据存到缓存里,这样每次CPU找数据时先从缓存找,找不到
再从内存找。
这里就有一个问题,什么是常用的数据。如果缓存里放的不是常用的数据,那么CPU会经常从缓存找数据找不到再到内存找,这样效率会很低。所以,就需要好的算法来确定哪些是常用的数据。这里说一种LRU算法,也就是最近最少使用算法。
当CPU从缓存中找数据时,如果找到,则称为命中,如果没找到,则是没命中,会再从内存中找。当CPU没有命中从内存中找到数据后,会根据LRU算法来确定需要将缓存里的哪个数据换出来,从而将新的数据放进去。
下面说下关于缓存的应用。
一般来说,缓存有两种,将常用的数据存到磁盘上,或者将常用的数据存到内存。比如COOKIE就是将数据存在用户的磁盘上。也可以将数据放在内存中。在用
户登录的时候,将用户的各种信息放在一个全局的HashMap。那么这样有什么好处呢,以后每次要用到用户的信息时,不用访问数据库查找信息,直接从
hashMap总读取。这样就减少的数据库访问次数。但是,这样也有一个坏处,就是每次用户数据更新时,都得更新hashmap,如果哪次忘记了更新,则
会导致更新的数据无效,发生很多奇怪的问题。
所以有时候对于是否用缓存就有一个选择的考虑,缓存可以方便取数据,但是数据更新的时候就不那么方便了
分享到:
相关推荐
关于缓存的一点心得 1、缓存有页面缓存与数据缓存,页面缓存就是把显示的页面生成一个文件,数据缓存就是把数据生成一个文件,都有一个更新缓存的间隔时间,判断文件的修改时间或者生成时间的时间邮戳加上间隔时间的...
关于缓存的一些资料关于缓存的一些资料关于缓存的一些资料关于缓存的一些资料关于缓存的一些资料
面试中缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级怎么解答 面试中缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级怎么解答 面试中缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级怎么解答
EhCache EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。 主要的特性有: 1. 快速. 2. 简单. 3. 多种缓存策略 4. 缓存数据有两级:内存和磁盘,因此无需担心容量...
缓存、缓存算法和缓存框架简介
PHP 缓存PHP 缓存PHP 缓存PHP 缓存 PHP 缓存
关于APP清理缓存
浏览器缓存机制介绍与缓存策略剖析.pptx
主要给大家深入的介绍了关于MyBatis中一级缓存与二级缓存的相关资料,文中详细介绍MyBatis中一级缓存与二级缓存的工作原理及使用,对大家具有一定的参考性学习价值,需要的朋友们下面来一起看看吧。
redis缓存 redis缓存
关于 缓存依赖
* 缓存抽象类 */ abstract class Cache_Abstract { /** * 读缓存变量 * * @param string $key 缓存下标 * @return mixed */ abstract public function fetch($key); /** * 缓存变量 * * @...
redis本地缓存与redis缓存
只有匹配的组件会被缓存 exclude: 字符串或正则表达式。任何匹配的组件都不会被缓存。 结合router缓存部分页面: 比较实用的例子: 思路:通过beforeRouterLeave这个钩子来对路由里面的keepAlive进行赋值。从而动态...
自己整理的.net缓存资料及类型 何时用到缓存 缓存的利与弊等等
YII 多种缓存机制的运用 如文件缓存内存缓存 动态缓存等
缓存基础知识,对缓存知识的总结文件,入门介绍。
超级缓存技术缓存技术asp页面缓存缓存技术asp页面缓存
EhCache 是一个纯 Java 的进程内缓存框架,具有快速、精干等特点,是 Hibernate 中默认的 CacheProvider。Ehcache 是一种广泛使用的开源 Java 分布式缓存。主要面向通用缓存,Java EE 和轻量级容器。它具有内存和...