On Fri, Apr 20, 2012 at 4:07 PM, 张宗礼
<vzzl@163.com> wrote:
是这样的,我现在想这样做,首先读memcache,如果未命中就读mysql然后将值set到memcache中,我现在还有两个疑惑:
(1)如果将通过DrizzleModule从mysql获取到的数据set到memcache呢,我不知道怎么能拿到
DrizzleModule 返回的数据
ngx_srcache 模块的 srcache_store 配置指令会自动在输出过滤器阶段拦截并保存 ngx_drizzle/ngx_rds_json 生成的响应,包括响应头和响应体。
location /memc {
internal;
set $memc_key $query_string;
set $memc_exptime 3000;
}
location /api {
set $key $uri$args;
srcache_fetch GET /memc $key;
srcache_store PUT /memc $key;
srcache_store_statuses 200 301 302;
}
你应该在 location /api 中照常写下你的 ngx_drizzle 和 ngx_rds_json 的配置。ngx_srcache 会自动完成缓存操作。
我在memcache中手动存储了一个数据,key为:/apitest,value是: /apitest_value。我该如何通过http接口访问这个数据呢?
如果使用 ngx_srcache 进行缓存的话,建议不要自己向 memcached 写入内容,因为 srcache_store 会序列化整个响应,包括响应头,然后再放入 memcached 中。你自己写入的内容很可能不符合 ngx_srcache 要求的格式。
ngx_srcache 是透明的缓存。这里“透明”的含义是你不需要知道它的存在。照常访问你自己的 location 就是了。
Regards,
-agentzh