1。源码下载地址:
https://github.com/cxwshawn/ngx_proxy_store_file_mgr
2。介绍:
1)、nginx-conf目录:主要实现基于nginx.conf中操作redis数据库代码,基于lua实现;大致流程:
获取cache锁是否是locked -> 如果是locked,说明文件管理进程正在做lru策略,直接proxy到上游,不操作本地文件;
-> 非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的文件管理,主要思想:
目前只统计当磁盘剩余不超过20%时,通过redis中的sorted set排序结果取百分比的数量依次进行删除;
3)、配置项:
{
"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