有点意思。但是你的问题过于笼统,不好解答。
首先,你的抽奖名单数据是如何存储的,还是一个全新的系统,单纯就是一个抽奖系统?一次抽奖多少个?
现在就说个比较简单的情况,假设:你的抽奖名单全部在一个表里面存储,里面有一百万条数据,要一次性抽中500人。
我的设计思路就是:
首先利用循环把100万条数据插入redis缓存服务器后,插入过程肯定是比较慢的,因为是从数据库读入到redis缓存。读入完成后,再使用随机函数,随机抽取[0-100)的整数,直接通过index进行索引,快的时候,不用一秒就能命中数据。所以很轻松的解决了100万数据的索引速度慢的问题。
下图就是100w数据通过redis命中某条数据的速度,可参考以下:
命中了数据之后,为了防止重复命中,当然同时应该使用另外一个redis库表存储好命中的结果id,每抽一次数据就跟命中结果比较,存在则重新抽,直到500个不重复的数据抽满为止。
最后把命中的结果更新到数据库(如mysql server或者mssql server 等) 进行固化保存。
另外给你介绍一个我使用的redis工具,方便你参考处理:
redis 存储的数据类型,可以是整数,字符串,数组,json等,我下面用的是json,你可用key及value 均存储用户的id号即可:
下面存储是数组:
具体如何安装redis,可用百度一下,有window是版本,安装过程也不复杂。
希望我的解答能帮到您!
本文来自投稿,不代表天一生活立场,如若转载,请注明出处:http://tiyigo.com/baike/36155.html