• 【读书笔记】 nginx + memcached 高速缓存


    原文地址: http://blogread.cn/it/article/4441 

    内容很简单了,就是利用nginx直接于memcache互动进行cache的命中查找,而不是跳到PHP的处理周期当中去,

    没什么好说的,摘录其中一句话:

    传统的缓存策略仍可能造成效率低下,因为传统上是通过PHP操作memcache的,要执行PHP代码,Nginx就必然要和 FastCGI通信,同时也要进入PHP的生命周期,因此SAPI、PHP Core和Zend Engine的一系列逻辑会被执行。更糟糕的是,fpm和PHP可能会阻塞,因此破坏了Nginx的非阻塞性。下图展示了在memcache命中时整个处 理过程。

    这里原文附图梦戳这里

    然后要达到高性能,就需要跳出这个PHP处理周期,而不必每次请求到达都要调用fastphp‘模块来处理,于是就有了:

    可以看到,即使memcache命中,还是要进入PHP的生命周期。我们知道,目前很多互联网应用都使用RESTful规范进行设计,在 RESTful应用下,普遍使用uri和查询参数作为缓存的key,因此一种更高效的缓存策略是Nginx直接访问memcache,并用$uri 和$args等Nginx内置变量设定缓存key规则,这样,当缓存命中时,Nginx可以跳过通过fastcgi和PHP通信的过程,直接从 memcache中获取数据并返回。memc-nginx和srcache-nginx正是利用这种策略提高了缓存的效率。下图是这种高效缓存策略的示意 图(当memcache命中时)。

    原文附图地址在这里 

    传统的缓存策略仍可能造成效率低下,因为传统上是通过PHP操作memcache的,要执行PHP代码,Nginx就必然要和 FastCGI通信,同时也要进入PHP的生命周期,因此SAPI、PHP Core和Zend Engine的一系列逻辑会被执行。更糟糕的是,fpm和PHP可能会阻塞,因此破坏了Nginx的非阻塞性。下图展示了在memcache命中时整个处 理过程。

  • 相关阅读:
    驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接
    spring 、Mybatis配置sql server数据库
    Win8安装程序出现2502、2503错误解决方法
    jsp-include 写法
    在swt中获取jar包中的文件 uri is not hierarchical
    Java调用shell脚本
    SWT自定义选项卡CTabFolder
    weblogic 生产模式和开发模式的互相转换
    or1200处理器的异常处理类指令介绍
    USACO Section 2.1 Healthy Holsteins
  • 原文地址:https://www.cnblogs.com/superniaoren/p/3350346.html
Copyright © 2020-2023  润新知