Chinaunix首页 | 论坛 | 博客
  • 博客访问: 861651
  • 博文数量: 182
  • 博客积分: 1992
  • 博客等级: 上尉
  • 技术积分: 1766
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-18 11:49
文章分类

全部博文(182)

文章存档

2019年(1)

2016年(5)

2015年(29)

2014年(38)

2013年(21)

2012年(36)

2011年(52)

我的朋友

分类: 系统运维

2015-09-04 12:36:46

这两天在弄一个简单的缓存方案来用,通过网上搜索学习,最后定格为srcache + redis。最初想用lua-resty-redis,这个直接可以用lua操作redis来添加、获取内容,十分的灵活,但苦于lua不熟悉,redis也不够熟悉,最后试了一下,放弃了。最后选择使用srcache-nginx-module中例子的方案:ngx_http_redis-0.3.7, redis2-nginx-module,
方案很简单,直接拿来就可以用了

点击(此处)折叠或打开

  1. location /api {
  2.         default_type text/css;
  3.  
  4.         set $key $uri;
  5.         set_escape_uri $escaped_key $key;
  6.  
  7.         srcache_fetch GET /redis $key;
  8.         srcache_store PUT /redis2 key=$escaped_key&exptime=120;
  9.  
  10.         # fastcgi_pass/proxy_pass/drizzle_pass/postgres_pass/echo/etc
  11.     }
  12.  
  13.     location = /redis {
  14.         internal;
  15.  
  16.         set $redis_key $args;
  17.         redis_pass 127.0.0.1:6379;
  18.     }
  19.  
  20.     location = /redis2 {
  21.         internal;
  22.  
  23.         set_unescape_uri $exptime $arg_exptime;
  24.         set_unescape_uri $key $arg_key;
  25.  
  26.         redis2_query set $key $echo_request_body;
  27.         redis2_query expire $key $exptime;
  28.         redis2_pass 127.0.0.1:6379;
  29.     }
但是问题来了,我有很多post带参数的,这样同一个uri下就只能有一个key,解决key的计算就成了棘手的问题。使用set_by_lua来计算key吧,无法获取post的在参数,用了几个其他比如rewrite_by_lua等可以获取post中参数的directive还是不行,key还未计算已经传到srcache_fetch中去了。最后想到了一个方法,就是先用content_by_lua计算key之后,把key当作uri的parameter,在content_by_lua中redirect到另一个cache 的这个location中去,那样就有计算好的key值了。嘿嘿。。


阅读(1912) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~