1。源码下载地址: nginx
https://github.com/cxwshawn/ngx_proxy_store_file_mgrgit
2。介绍:github
1)、nginx-conf目录:主要实现基于nginx.conf中操做redis数据库代码,基于lua实现;大体流程:
golang
获取cache锁是不是locked -> 若是是locked,说明文件管理进程正在作lru策略,直接proxy到上游,不操做本地文件;
redis
-> 非locked, 那么设置redis中sorted set文件访问时间(即score)
数据库
redis结构采用hash+sorted set; hash为md5(uri)->filepath, sortedset 为:md5(uri)+ngx.now()(score)排序;并发
2)、src目录:主要采用golang实现的nginx proxy_store的文件管理,主要思想:
lua
目前只统计当磁盘剩余不超过20%时,经过redis中的sorted set排序结果取百分比的数量依次进行删除;
spa
3)、配置项:
.net
{
"MaxFileLimit" : 100000, 最大文件数量,超过该数量时作LRU(未实现)
"CheckInterval" : 20, 检测作LRU的时间间隔
"ExpireDays" : 7, 过时时间超过7day的文件均会删除
"ErrorLog": true, 是否输出错误日志
"AccessLog": false, 是否输入调试日志
"SortedSetName": "defset", redis中sortedset的名字与access_file.lua文件中的sorte set名字一致
"HashName": "defhash", redis中hash名字与access_file.lua文件中的hash名字一致
"RedisAddr" : "127.0.0.1:6379", redis数据库的地址
"RoutineCount" : 32 go lru的并发数
}
4)、若有问题,mail到cxwshawn@yeah.net