Nginx memcache缓存和失效

时间:2012-08-25 12:35:24

标签: caching nginx memcached php

我们目前使用NGINX作为我们的服务器,我们使用memcache来缓存数据库查询以及php中的页面。

我们有一个版本编号系统,在任何更新或插入中都会发生此版本号,因此,当每个密钥附加此版本号时,memcache将始终获取新数据。它适用于我们,因为读写%split是80/20%,所以大多数时候memcache将返回数据而不会访问数据库。

现在我们计划将此缓存策略移至服务器级别,其中NGINX和memcache模块将使用请求uri以及版本号缓存GET请求。

只需要一些关于我如何实现这一目标的反馈

  • 我可以获取存储在NGINX的memcache中的这个版本号吗? (这将用于将其附加到请求uri)
  • 我如何处理登录用户? (我可以为登录用户设置一个cookie,并检查这个cookie是否存在于nginx中,如果它只是将请求传递给后端而不是memcache)

1 个答案:

答案 0 :(得分:2)

1)遗憾的是你无法用“vanila”nginx做到这一点。但是有一些第三方nginx模块可以帮助你实现它。请看一下

增强memcached协议支持 https://github.com/bpaquet/ngx_http_enhanced_memcached_module http://wiki.nginx.org/NginxHttpMemcModule

价值评估 https://github.com/vkholodkov/nginx-eval-module

我想建议你给github.com/agentzh/ngx_openresty一个机会(nginx有很多补丁和模块) 关于NGINX脚本的精彩演示agentzh.org/misc/slides/nginx-conf-scripting/nginx-conf-scripting.html

2)互联网上有很多关于如何禁用缓存来记录用户的例子

    if ($http_cookie ~* "auth_user") {
        # do some thing, set flag or so  
    }