Rate limiting can be an effective way of conserving resources and preventing automated or nefarious activities on your site. The key issues to address when designing a solution are: How do we incorporate time given that it's a continuous variable? How can we efficiently expire old data? How can we scale the solution so that it can handle many hundreds of subjects and/or actions per second?
via NoSQL databases