【问题标题】:Webapp - Best method to limite usage of userWebapp - 限制用户使用的最佳方法
【发布时间】:2013-09-20 01:08:49
【问题描述】:

我正在构建一个 web 应用程序,我想限制用户过度使用该应用程序。

我想限制用户每月发送电子邮件通知的次数。

我想这样做的方法是使用 user_id 日期时间记录每个通知。 所以在发送通知之前,我会选择 * WHERE user_id Between Date and Date+30。 并验证条目数是否小于限制。

有没有一种简单快捷的方法来做到这一点。 当我将有 1/2 百万的日志记录条目时,我有点紧张。

【问题讨论】:

  • 对我来说似乎是一种合理的方法。

标签: php mysql validation


【解决方案1】:

这类问题非常适合 Redis 解决。

基本上,您可以为每个用户设置一个缓存项,然后在每次用户发送电子邮件时增加它。缓存项目将在月底到期。您可以随时读取此缓存项。这样你就不需要任何数据库表或查询,速度应该超级快。

如果您想在“前 30 天”期间精确限制用户,事情会变得有点复杂。在这种情况下,您通过将用户事件转储到 Redis 中的排序集中来记录用户事件,并以用户 ID 为键。然后,您可以使用排序集上的 ZCOUNT 函数来精确计算该用户在过去 30 天内发生了多少事件。当然,分数是事件的时间戳。

顺便说一句,Redis 系统非常容易安装,在您的情况下可能不需要任何配置。

【讨论】:

  • Redis系统比mysql快吗?
  • 底层的数据结构应该是一样的(像btree之类的索引数据集),所以算法性能应该和Redis和MySQL相当。额外的优势是 Redis 很可能会在内存中执行操作,并且它没有 MySQL 的 ACID 要求,所以我会说 Redis 有一点优势。
  • 感谢您的帮助。我将在本周末尝试 Redis,然后在我的生产服务器上在线安装。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-09
  • 2010-11-01
  • 2011-09-14
  • 2013-09-25
  • 2012-03-28
  • 1970-01-01
  • 2011-04-10
相关资源
最近更新 更多