php 防止重复投票,PHP如何有效防止重复投票问题?

迷茫2017-04-10 13:13:352楼

无论是现实投票,还是网络投票,都要保证投票者身份的唯一性。一般我们会把投的票放入存储中,但是放到数据库里查询起来显然太慢了,而现在有了redis(http://redis.io),你就可以把它放到set里了。下面我用php代码来演示这一过程,其它语言类同

$userId = '111';

$questionId = '222';

// 用户111向问题222投票,那么我们把222的userId放到名为question:vote:111的set里

$redis->sAdd('question:vote:' . $questionId, $userId);

// 判断222用户是否对111问题投过票了,只需判断111是否被包含在question:vote:111的set里

$isVoted = $redis->sIsMember('question:vote:' . $questionId, $userId);

// 我们还可以取消投票,只需要从set里移除这个元素

$redis->sRem('question:vote:' . $questionId, $userId);

所有的一切都在内存中进行,非常快速

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值