• 有关缓存的那些事 读 PHP高级编程


    数据的缓存

    数据缓存的基本概念是通过某种方式获取数据之后,把数据存储起来,以方便后面可以更加有效的获取。数据缓存一方面可以减少系统的复杂操作,提高性能,另一方面,减少网络延迟(很多就得到结果,不需要长连接,占用网络资源).

    缓存需要考虑几个问题:

    * 缓存的大小  -- 缓存要占用资源,资源不是无限的,所以要对缓存的大小做好规划
    * 缓存数据的并行访问 -- 同时如果有多个对数据的访问,应该不是问题
    * 缓存数据的时效效性  -- 缓存的数据须有个时效性。时效性的标准必须明确。过时的数据可能不是系统预期的行为。
    * 缓存数据的一致性 -- 缓存的数据不能跟系统其他部分的数据相互矛盾。
    有些场景下,还要考虑下面两种情况:
     * 有层级的缓存 -- 把缓存分级。 进一步提升系统性能。
     * 预缓存 -- 在数据尚未真正请求的时候就已经把数据缓存起来了。
    这两种情况跟业务逻辑紧密相关。

    对于动态网站来说, 有三种级别的缓存:
    * 缓存整个页面,或者某一部分(比如导航部分,根据数据库查询生成,很少改变)
    * 缓存跨请求的数据,比如任意的会话数据(session data, 购物篮),用户的侧写数据
    * 缓存计算结果,比如数据库查询结果, 某个RPC返回的数据


    那么,怎么判断哪些数据需要缓存,而且可以缓存呢?
    * 完全静态的页面?
    * 在某一些时间段内静态的页面?
    * 完全静态的数据?
    * 在某一些时间段捏是静态的数据?

    如何衡量一个缓存机制是成功的呢?
    一个指标,就是cache locality; = cache read hits / cache read attempts. 在100次读取缓存的操作中,有多少次能真正读取到正确的数据。
    当这个值比较小的时候,缓存不但没有提高系统的性能,反而降低了性能。

  • 相关阅读:
    jquery判断元素是否可见隐藏
    jQuery的replaceWith()函数用法详解
    前端工作面试问题
    Windows下安装sass和compass失败的解决办法
    马尾图案之canvas的translate、scale、rotate的方法详解
    boost bimap
    boost multi index
    boost regex expression
    boost format
    boost lexical_cast
  • 原文地址:https://www.cnblogs.com/restart/p/4430064.html
Copyright © 2020-2023  润新知