使用Redis List简单实现抢红包

Redis抢红包并发解决方案
本文介绍了一种使用Redis实现的简单并发抢红包方案。通过利用Redis的单线程特性和List的POP方法来确保并发场景下红包的公平分配。文中展示了具体的C#代码示例,演示了如何初始化红包及用户抢红包的过程。

在这里不讨论抢红包的算法,只用redis简单尝试解决抢红包。借助redis单线程和List的POP方法。

 1         static void Main(string[] args)
 2         {
 3             IRedisHelper redisClient = RedisFactory.CreateRedisRepository();
 4 
 5             //初始化假数据
 6             //红包的算法这里不关注 只用redis简单解决并发问题
 7             double money = 20000;    //200元   2W分   //微信群200人   //20人抢    //发10包
 8             double singlePacket = 20000 / 10;
 9             var key = "redisPacketKeyTest2";
10             for (int i = 0; i < 10; i++)
11             {
12                 redisClient.ListLeftPush(key, singlePacket);
13             }
14 
15             //开抢
16             for (int i = 0; i < 20; i++)
17             {
18                 new Thread((obj) =>
19                 {
20                     Console.WriteLine("有人开抢");
21                     var count = (int) obj;
22                     var result = redisClient.ListLeftPop<double>(key);
23                     if (result > 0)
24                     {
25                        
26                         Console.WriteLine("" + (count + 1) + "人抢到了" + result);
27                     }
28                     else
29                     {
30                         Console.WriteLine("" + (count + 1) + "人没抢到");
31                     }
32                 }).Start(i);
33                
34                
35             }
36             Console.Read();
37         }

 

转载于:https://www.cnblogs.com/tdws/p/6360017.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值