2012-08-25 48 views
2

我们目前使用NGINX作为我们的服务器,我们使用memcache来缓存db查询以及php中的页面。Nginx的memcache缓存和失效

我们有一个版本编号系统,在任何更新或插入过程中,此版本号都会被提升,结果memcache将始终获取新数据,因为每个密钥都附加了此版本号。它适用于我们,因为读写%split是80/20%,所以大部分时间memcache将会在不碰到数据库的情况下返回数据。

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

只是需要我如何能做到这一点

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

回答

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脚本代理的精彩演示文章url.org/misc/slides/nginx-conf-scripting/nginx-conf-scripting.html

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

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

谢谢你的资源,看看他们应该是有用的。 – user160108