`
liulanghan110
  • 浏览: 1063946 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

关于缓存的一点感悟

阅读更多

关于缓存,就是有个东西你经常要用,但是每次找它都很麻烦,然后就把它放在一个很容易找到的地方,这样每次用的时候就方便了。

 

    就像你买一些你喜欢吃的水果放到家里的冰箱里,以后你想吃水果的时候,可以直接从冰箱里拿,而不是去水果店买。

 

     先说下CPU的缓存。CPU执行时所需要的指令和数据都需要从内存中取,可是,从内存中取数据会比较麻烦。那么就想到了一个办法,可不可以将常用的数据存 到方便CPU读取的地方,如果那个地方找不到,再去内存中找呢?这样,就出现了缓存。将常用的数据存到缓存里,这样每次CPU找数据时先从缓存找,找不到 再从内存找。

 

      这里就有一个问题,什么是常用的数据。如果缓存里放的不是常用的数据,那么CPU会经常从缓存找数据找不到再到内存找,这样效率会很低。所以,就需要好的算法来确定哪些是常用的数据。这里说一种LRU算法,也就是最近最少使用算法。

 

       当CPU从缓存中找数据时,如果找到,则称为命中,如果没找到,则是没命中,会再从内存中找。当CPU没有命中从内存中找到数据后,会根据LRU算法来确定需要将缓存里的哪个数据换出来,从而将新的数据放进去。

 

       下面说下关于缓存的应用。

 

        一般来说,缓存有两种,将常用的数据存到磁盘上,或者将常用的数据存到内存。比如COOKIE就是将数据存在用户的磁盘上。也可以将数据放在内存中。在用 户登录的时候,将用户的各种信息放在一个全局的HashMap。那么这样有什么好处呢,以后每次要用到用户的信息时,不用访问数据库查找信息,直接从 hashMap总读取。这样就减少的数据库访问次数。但是,这样也有一个坏处,就是每次用户数据更新时,都得更新hashmap,如果哪次忘记了更新,则 会导致更新的数据无效,发生很多奇怪的问题。

 

          所以有时候对于是否用缓存就有一个选择的考虑,缓存可以方便取数据,但是数据更新的时候就不那么方便了

0
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics