`
fff
  • 浏览: 31423 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

nginx+memcached=http cache

阅读更多
上周末在openparty听了taobao @agentzh的 nginx scripting hack的主题演讲,心情万分激动,就像一个原始人发现了一把电锯似的的感觉,正好赶上项目需要一个http cache,就借机实践了一把。
过程中,代码量少的令人发指。
业务描述:根据para中的三个参数构造一个复合key,进行memcached的存(post)取(get)

这段是 get 逻辑
        location /cache/get {
                echo_exec /cache/get/$arg_from$arg_to$arg_date;
        }

        location ~ '^/cache/get/(.*)$'{
                internal;
                set $memc_key $1;
                set $memc_cmd get;
                # format definition is at below
                access_log logs/getmemc.log memc;
                memc_pass my_memc_backend;
               #404 处理
                error_page 404  = @nodata;
        }

        location @nodata{
                echo "NO_DATA";
        }



这段是 set 逻辑
        location /cache/set {
               #大数据提交,若写缓存文件,可能导致form_input无法读取
                client_body_buffer_size 20k;
                #读取post para
                set_form_input $from;
                set_form_input $to;
                set_form_input $date;
                set_form_input $memc_value content;
                # 用lua进行拼接key
                set_by_lua $memc_key "return ngx.arg[1]..ngx.arg[2]..ngx.arg[3]" $from $to $date;
                # format 'memc' definition is at below
                access_log  logs/setmemc.log memc;

                set $memc_cmd   set;
                set $memc_exptime      0;

                memc_pass my_memc_backend;
        }


这段应该放在头部,供下面引用
#format for memc about
    log_format  memc '$remote_addr [$time_local] $memc_key $body_bytes_sent';


但是简单的前提是“站在巨人的肩膀上”,感谢 @agentzh  @chaoslawful 在nginx社区的贡献。以下是用到的他们开发的mod
 --add-module=/root/agentzh-echo-nginx-module-22f3f7e\
 --add-module=/root/agentzh-memc-nginx-module-1128d82\
 --add-module=/root/calio-form-input-nginx-module-8f05d08\
 --add-module=/root/chaoslawful-lua-nginx-module-0ef14aa\
 --add-module=/root/ngx_http_upstream_keepalive-2ce9d8a1ca93\
 --add-module=/root/simpl-it-ngx_devel_kit-8d75c70


后感:
nginx可以学一点,高度的可扩展,大有前途。而且有个重点是里面的中文开发者很活跃,比如上面两位。

补充:client_body_buffer_size 20k; POST数据包太大,超过默认buff(8k)时,会写到临时文件,导致 $request_body 读取有问题。


相关ppt
http://agentzh.org/misc/slides/nginx-conf-scripting/
http://agentzh.org/misc/slides/recent-dev-nginx-conf/
分享到:
评论

相关推荐

    tomcat8 + nginx + memcached + cas 实现负载均衡的配置包

    # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #}...

    Nginx+tomcat7.0.22+memcached

    使用Nginx做的负载均衡,memcache做高速cache,tomcat7.0.22做web容器环境下的session共享及缓存。 能够做到重启tomcatsession不失效或多个tomcat应用下session共享。 该RAR包包含了配置所需要的全部jar文件。

    CentOS 5.4下的Memcache安装步骤(Linux+Nginx+PHP+Memcached)

    下载:http://memcached.googlecode.com/files/memcached-1.4.4.tar.gz另外,Memcache用到了libevent这个库用于Socket的处理,所以还需要安装libevent, libevent的最新版本是libevent-1.4.13-stable。(如果你的...

    nginx+apache+mysql+php+memcached+squid搭建集群web环境

    服务器的大用户量的承载方案一、前言 二、编译安装 三、 安装MySQL、memcache 四、 安装Apache、PHP、eAccelerator、php-memcache 五、 安装Squid 六、后记 一、前言,准备工作当前,LAMP开发模式是WEB开发的首选,...

    ubuntu下搭建php开发环境(nginx+(cgi)php5fpm+memcached+xdebug)

    nginx的安装和配置其实很简单,nginx本身非常轻量级, 直接 sudo apt-get install nginx 就可以了 他的配置文件是在/etc/nginx/里面,网站项目路径是在/var/www里面,安装之后一定要确保nginx的启动账户有对网站目录...

    实战nginx-张宴

    9.3 新浪网开源软件项目——基于Nginx的NCACHE网页缓存系统 第3部分 实战篇 第10章 Nginx在国内知名网站中的应用案例 10.1 Nginx反向代理与负载均衡类网站应用案例 10.2 Nginx+PHP类网站应用案例 10.3 Nginx视频...

    实战Nginx.取代Apache的高性能Web服务器

    9.3 新浪网开源软件项目——基于Nginx的NCache网页缓存系统 第3部分 实战篇 第10章 Nginx在国内知名网站中的应用案例 10.1 Nginx反向代理与负载均衡类网站应用案例 10.2 Nginx+PHP类网站应用案例 第11章 Nginx...

    实战Nginx:取代Apache的高性能Web服务器 第一章

    9.3 新浪网开源软件项目——基于Nginx的NCache网页缓存系统 第3部分 实战篇 第10章 Nginx在国内知名网站中的应用案例 10.1 Nginx反向代理与负载均衡类网站应用案例 10.2 Nginx+PHP类网站应用案例 第11章 Nginx的非...

    Nginx HttpMemcModule和直接访问memcached效率对比测试

    测试环境: 测试客户机A: HP DL380G4,2个双核CPU,4G Ram,2块10k RPM SAS盘做raid 1,ext3 Nginx所在服务器B:DELL R710,E5620 * 2,32G Ram,6块盘15K RPM SAS盘做raid 1+0,xfs Memcached所在服务器C:DELL ...

    实战Nginx高性能Web服务器

    13、高性能Web服务器Nginx的配置与部署研究(13)应用模块之Memcached模块+Proxy_Cache双层缓存模式 内容:讲述一种提供双层缓存抗穿透的HTTP服务缓存解决方案。 14、高性能Web服务器Nginx的配置与部署研究(14)...

    Nginx:取代apache的高性能服务器

    重点介绍了Nginx的配置优化方法、Nginx与PHP/Ruby/Python/JSP/Perl/Memcached的结合配置方法、Nginx HTTP反向代理与负载均衡的配置与优化、Nginx模块开发等,最后还分析了新浪的开源软件项目──基于Nginx的NCache...

    docker-nginx:使用 CPU 优化和负载均衡器模块构建 NGINX docker

    带有SRCache动态模块 带Memc动态模块 带有PostgreSQL动态模块 带Redis动态模块 带Redis2动态模块 使用Resty DBD Streams to JSON动态模块 带有Echo动态模块 带有前向代理模块 带有Opentracing动态模块和Jaeger插件 ...

    决战Nginx系统卷:高性能Web服务器详解与运维第一部分(保证能用)

    第1部分 Nginx服务器 第1章 Nginx的功能 第2章 Nginx的模块管理和进程管理 第3章 Nginx如何处理一个请求 ...第55章 缓存技术――Memcached 第56章 缓存技术――NCACHE 第57章 缓存技术――Varnish

    决战Nginx系统卷:高性能Web服务器详解与运维第二部分(保证能用)

    第1部分 Nginx服务器 第1章 Nginx的功能 第2章 Nginx的模块管理和进程管理 第3章 Nginx如何处理一个请求 ...第55章 缓存技术――Memcached 第56章 缓存技术――NCACHE 第57章 缓存技术――Varnish

    决战Nginx: 系统卷 - 高性能Web服务器详解与运维第三部分(保证能用)

    第1部分 Nginx服务器 第1章 Nginx的功能 第2章 Nginx的模块管理和进程管理 第3章 Nginx如何处理一个请求 ...第55章 缓存技术――Memcached 第56章 缓存技术――NCACHE 第57章 缓存技术――Varnish

    Shell脚本实现的memcached进程监控

    WEB服务器使用memcached,但是不知道为什么memcached老是挂掉(基本20分钟~50分钟左右),导致部分网站页面在访问的时候出错;定义日志后,查看日志也未能发现什么;...nginx=`/usr/local/nginx/sbin/nginx -s reload

    实战Nginx:取代Apache的高性能Web服务器

    重点介绍了Nginx的配置优化方法、Nginx与PHP/Ruby/Python/JSP/Perl/Memcached的结合配置方法、Nginx HTTP反向代理与负载均衡的配置与优化、Nginx模块开发等,最后还分析了新浪的开源软件项目──基于Nginx的NCache...

    实战Nginx.取代Apache的高性能Web服务器.2010 pdf

    重点介绍了Nginx的配置优化方法、Nginx与PHP/Ruby/Python/JSP/Perl/Memcached的结合配置方法、Nginx HTTP反向代理与负载均衡的配置与优化、Nginx模块开发等,最后还分析了新浪的开源软件项目──基于Nginx的NCache...

    upcache:由上游应用程序动态配置的缓存代理

    memcached.conf要求nginx> = 1.8,带有这些openresty的模块lua-nginx-module(启用luajit,否则会因缺少ffi软件包而失败) set-misc-nginx-module srcache-nginx-模块memc-nginx-module(如果使用memcached) ...

    实战ngix服务器

    重点介绍了Nginx的配置优化方法、Nginx与PHP/Ruby/Python/JSP/Perl/Memcached的结合配置方法、Nginx HTTP反向代理与负载均衡的配置与优化、Nginx模块开发等,最后还分析了新浪的开源软件项目──基于Nginx的NCache...

Global site tag (gtag.js) - Google Analytics