在社交网站,常见的会有一些鼓励用户发帖的操作。比如,用户发帖超过100的话,送他50元的购物优惠券。部分的“黑产”用户,很可能会看上这部分利益,开始疯狂的灌水帖。
使用按键精灵便可以实现这样的效果,它模拟用户正常的发帖过程,分分钟拿走优惠券。我们避免不了这种情况,但我们可以给这些行为设置阻碍。最常见的就是对接口做频率限制。
如何实现频率限制呢,先看两个基本的限制规则:
- 1分钟内用户发帖不超过10篇
- 5分钟内用户发相同内容的帖子不超过10篇
这两个规则的本质:在固定间隔时间区间内对数量做限制。
如何实现呢,这里通过使用Redis
的有序集来实现:ZSet
结构的score
存储时间,value
存储值。而固定时间间隔其实是一个滑动的过程,所以,对象的过期时间也应该是动态变化的。