需求:数据库内共有 10 万个资源,限制每用户每小时最多访问其中 100 个。
目前的思路:redis 里针对每个用户生成一个数组储存该用户已访问过的资源的 id ,每次请求时判断 ID 是否在数组中。
另外因为需求是限制访问资源种类而不是资源数量(比如实际上允许用户多次请求同一资源,只要不是不同资源就不会加以限制),且访问是与用户挂钩,所以似乎不太适合在业务前实现。
问题:
1 、感觉这种方式效率比较低,不是很优雅。
2 、限制有 1 小时时限,如何在数据超过期限后自动从数组中清除也是没啥太好办法。
这种需求有什么通用方案吗?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.