caching - Nginx memcache 缓存和失效

标签 caching nginx memcached php

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

我们有一个版本编号系统,在任何更新或插入发生时,该版本号都会增加,因此 memcache 将始终获取新数据,因为每个键都附加了该版本号。它对我们有用,因为读写百分比拆分为 80/20%,因此大多数时候 memcache 将返回数据而不访问数据库。

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

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

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

最佳答案

1) 不幸的是,你不能使用“vanila”nginx 来做到这一点。但是有一些第 3 方 nginx 模块可以帮助您实现这一点。请看一下

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

值(value)评价 https://github.com/vkholodkov/nginx-eval-module

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

2)互联网上有很多如何禁用日志用户缓存的示例

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

关于caching - Nginx memcache 缓存和失效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12122020/

相关文章:

c# - 如何阻止浏览器(尤其是Internet Explorer)进行JavaScript的 super 缓存?

spring - RedisCacheManager 在代码中 Autowiring 但未按预期工作

caching - kubernetes nginx 入口 Controller /缓存静态 Assets

javascript - 如何检测用户是否在 nginx(或 apache)conf 文件中启用了 javascript?

architecture - 如何实现缓存服务器?

java - Memcached 为使用 python 设置的字符串获取空值,然后从 Java 获取

适用于 IE7 和 iE8 的 PHP Ajax 缓存

javascript - 使用 GUID 作为键缓存 "deep"JSON 对象

ssl - 将 HTTPS 设置为默认但允许 HTTP?

php - 将 Memcached 用于实时数据表