| | 19 | |
| | 20 | |
| | 21 | 旁路缓存分为两种方式:方法一:应用程序查完数据后投递到相应地方,相应地方的程序就会把投递过来的信息进行缓存存取。 |
| | 22 | |
| | 23 | 方法二:旁路缓存生成缓存程序会从相应log中拿出相应记录,已相应访问方法生成相应缓存,然后再投递到相应地方,相应地方的程序就会把投递过来的信息进行缓存存取。 |
| | 24 | |
| | 25 | MongoDB作用:存储相应缓存key和value的信息,为删缓存提供依据,可能你会问:旁路缓存的key不是根据uri中相应参数做组合生成的么? |
| | 26 | |
| | 27 | key组成的大部分信息可以在uri的参数中找到,但不排除有特例,因为当组成的key太长的时候,我们可能对这些长做一个md5然后再进行存储, |
| | 28 | |
| | 29 | 这时候如果要删缓存的时候就是个问题了。Cache Manager System 缓存管理系统就是为应付这种情况而存在。这会产生一个问题,把大部分连点都缓存下来,那数据量是非常可观, |
| | 30 | |
| | 31 | 例如:现在dlc2中使用的key是由dlid linkid 和useragent组成,那它一个连点可以有的最大缓存数为2^3*10*2^5*2,现在不使用useragent所以key的组合为dlid和linkid, |
| | 32 | |
| | 33 | 那它一个连点可以有的最大缓存数为2^2*10*2^5*2。如何管理起这不能眼看为实(即从连点得出key)的缓存也是个要解决的问题。当然如果不存在奇怪的组合key,缓存管理系统是没存在的必要。 |
| | 34 | |
| | 35 | Redis选择:Redis除了具有mc相应的一些功能外,它还存在硬缓存,就算是发生重启缓存还不至于丢失。 |
| | 36 | |
| | 37 | 用一些缓存保存时效性比较长的应用中,应该效果还不错,但需要经测试证实,在以往的测试中redis在我们的一些应用使用上并发连接不是很好--以后是在小图片缓存上进行测试过。 |
| | 38 | |
| | 39 | 所需的东西介绍:nginx-1.0.10.tar.gz lua-nginx-module memc-nginx-module nginx-eval-module echo-nginx-module ngx_devel_kit lua-5.1.4.tar.gz lua-nginx-module |
| | 40 | |
| | 41 | 调用lua进行在nginx编程,主要用户做逻辑,要求功能处理(例如:组建key,对key进行md5)总体概括为使nginx具有动态动能,与之前介绍的perl-nginx-module用法相当, |
| | 42 | |
| | 43 | 但lua对使用者要求会低,更容易上手,另一方面资料会多很多,功能也会多一点。memc-nginx-module 这个是个nginx对mc处理的第三方模块(在nginx自我模块中还存在memcached模块, |
| | 44 | |
| | 45 | 但它只具有读取功能),但memc第三方模块具有增删改功能,memc_cmds_allowed get set add delete flush_all; nginx-eval-module 可以将eval里面语句动作一个子程序来进行运行然后得到相 |
| | 46 | |
| | 47 | 应结果,大部分利用在proxy_passmemc_pass等;例如:我需要访问dl.pconline.com.cn然后以其body内容作为变量,就可以使用 |
| | 48 | |
| | 49 | eval $result {proxy_pass http://dl.pconline.com.cn}ngx_devel_kit 配合lua进行开发者的相应功能。echo-nginx-module |
| | 50 | |
| | 51 | 这样用来打印信息,使用这个模块可以在nginx中使用echo string 变量等进行信息的调试 |