本文使用 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);
~~~