usercount

使用Redis List简单实现抢红包

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

 

posted @   坦荡  阅读(1173)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示