使用Redis List简单实现抢红包

本文介绍了一种使用Redis解决抢红包并发问题的方法。通过利用Redis的单线程特性和List的POP操作,确保了抢红包过程的一致性和原子性。演示了如何初始化红包并模拟多人同时抢红包的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里不讨论抢红包的算法,只用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         }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值