一、redis實現搶紅包的功能(set 數據結構)
分兩種情況:
情況一:
? ? ? ? 從10個觀眾中隨機抽2名幸運觀眾
首先需要把10個觀眾的id(具體是什么id可以根據實際業務情況自己定義)放到redis 的 set 集合里
然后隨機抽取2名幸運觀眾,具體redis命令:
127.0.0.1:6379> sadd act:002 0001
(integer) 1
127.0.0.1:6379> sadd act:002 0002
(integer) 1
127.0.0.1:6379> sadd act:002 0003
(integer) 1
127.0.0.1:6379> sadd act:002 0004
(integer) 1
127.0.0.1:6379> sadd act:002 0005
(integer) 1
127.0.0.1:6379> sadd act:002 0006
(integer) 1
127.0.0.1:6379> sadd act:002 0007
(integer) 1
127.0.0.1:6379> sadd act:002 0008
(integer) 1
127.0.0.1:6379> sadd act:002 0009
(integer) 1
127.0.0.1:6379> sadd act:002 0000
(integer) 1
插入10個觀眾,act:002是活動的名字,后面分別是觀眾id
查看觀眾:
127.0.0.1:6379> SMEMBERS act:0021) "0007"2) "0005"3) "0006"4) "0008"5) "0003"6) "0004"7) "0002"8) "0000"9) "0009"
10) "0001"
插入成功
隨機抽取2名幸運觀眾:
127.0.0.1:6379> SRANDMEMBER act:002 2
1) "0001"
2) "0002"
情況二:
? ? ? ? 從10名觀眾中抽取獎項,其中一等獎1人,二等獎2人,三等獎3人
需要用到redis的 SPOP 命令
127.0.0.1:6379> spop act:002 1 #抽取一等獎 1 人
1) "0001"
127.0.0.1:6379> SMEMBERS act:002
1) "0002"
2) "0005"
3) "0007"
4) "0006"
5) "0000"
6) "0009"
7) "0003"
8) "0008"
9) "0004"
127.0.0.1:6379> spop act:002 2 #抽取二等獎 2 人
1) "0006"
2) "0005"
127.0.0.1:6379> SMEMBERS act:002
1) "0002"
2) "0007"
3) "0000"
4) "0009"
5) "0003"
6) "0008"
7) "0004"
127.0.0.1:6379> spop act:002 3 #抽取三等獎 3 人
1) "0004"
2) "0000"
3) "0003"
127.0.0.1:6379> SMEMBERS act:002
1) "0002"
2) "0007"
3) "0009"
4) "0008"