首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用nginx和redis跟踪最后的图像请求

使用nginx和redis跟踪最后的图像请求
EN

Stack Overflow用户
提问于 2014-04-24 18:47:26
回答 1查看 102关注 0票数 0

我使用nginx来提供静态文件。对于每个文件,当浏览器请求最后撤回该文件时,我希望保存时间戳。每个文件都有一个“唯一ID”,由1.ServerName、2.path和3.filename组成。文件名本身并不是唯一的。

我想使用像redis这样的键值存储来存储这些信息,然后使用cron作业将这些时间戳信息推送到mySQL数据库中。我需要将redis放在中间,因为系统需要处理大量并发请求。

最终目标是自动删除所有在过去6个月左右没有被请求的文件。

您将如何配置/设置nginx/redis来实现这一点?

最佳麒麟

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-28 19:24:57

它有两个组件: 1)如何构造Redis中的数据;2)如何配置Nginx来更新它。

除非您对MySQL有外部需求,否则我看不出有什么理由在这个链中使用它。

首先: Redis结构,我假设您将频繁地运行您的清理工作,比如每天。如果您是在固定的时间(如“每个月”)内这样做,您可能会以不同的方式构造您的数据。

我认为你最好的结构可能是使用排序集。键名为"SERVER:PATH",成员名为文件名,得分为UNIX时间戳。

使用这个设置,您可以不需要知道他们的文件名就可以拉出成员,并且可以根据他们的分数来这样做。这将允许您使用zrangebyscorezrevrangebyscore在示例中提取“任何具有得分zrangebyscore时间戳的成员”,其中时间戳也是“六个月前”的UNIX时间戳。

您运行的清理未使用文件的作业将使用这些命令来提取列表。当它们被删除时,您可以使用锌靶场命令从Redis中清除它们。如果您的写操作足够频繁,您可以运行一个只读奴隶来执行清理。

如果您期望有大量这样的条目,您可能会看到一个较长的时间导致一个更大的数据库。如果是这样的话,您可能需要将文件缓存的时间从6个月缩短到更易于管理的地方。六个月是很长的时间来保存一个缓存。

第二:配置Nginx来更新排序集,这在很大程度上取决于您对使用nginx模块的满意程度。它本机不这样做,但您可以使用卢阿-瑞恩-雷迪斯模块直接将该功能添加到Nginx中。我也用过类似的任务。

希望这能让你开始。关键部分实际上是Redis中的数据结构,因为其他部分只是简单地在您的安装程序中配置和测试Nginx部分。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23277301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档