一次活动的防刷实践

前段时间公司做了个投票活动,前30名即可领取奖品。为防止刷票制定了以下规则。

  1. 用户3票/天,每票须投给不同的用户不得重复投票。
  2. 被投票用户每小时最高可获票数位100票/小时
  3. 每IP投票100票/小时
  4. 每fingerprint 投票100票/小时

规则的实现也很简单,我们采用Redis来存储用户投票的状态信息。
用户3票/天
采用set集合存储。如 user_id:9527 {1223,2334,2555}
校验时先判断set集合成员是否大于等于3,再验证是否已经存在投票的用户防止重复投票。

其余均采用key:value方式,默认值为0,自增到100。TTL按规定时间设置即可。

通过实践发现,前端生成的fingerprint重复率比较高(一个公司的都有重复)。取消了这条限制。

发表评论

电子邮件地址不会被公开。 必填项已用*标注