本文使用 Redis 的集合数据结构制作定期开奖,并不是即时开奖。形式类似微博转发抽奖。
## 建立待抽奖名单
待抽奖名单可以一次性建立,也可以对符合条件的及时创建待抽奖名单。本文采用一次性建立,和即时创建用法一致都是通过`sAdd`实现
~~~
<?php
$redis = new \Redis();
$redis->connect('127.0.0.1', 6379);
$userLists = range(1,100);
$redis->sAddArray('lottery', $userLIsts);
~~~
## 抽奖
~~~
$redis = new \Redis();
$redis->connect('127.0.0.1', 6379);
// 奖品数量
$luckCount = 5;
// 中奖用户名单
$luckUserId = [];
for ($i=0; $i < $luckCount; $i++) {
// 已中奖的用户会从集合中删除
$luckUserId[] = $redis->sPop('lottery');
}
var_dump($luckUserId);
~~~