redis秒杀小测试

{

var builder = new ConfigurationBuilder().AddCommandLine(args);
var configuration = builder.Build();
string id = configuration["id"];
int minute = Convert.ToInt32(configuration["minute"]);
Console.WriteLine("开始"+id);
using (RedisClient client = new RedisClient("127.0.0.1", 6379))
{
client.Set<int>("number", 10);
}
Seckill.Show(id, minute);

}

 

public static void Show(string id, int minute)
{
#region 自减1,返回自减后的值
//开启10个线程去抢购
Console.WriteLine($"在{minute}分0秒正式开启秒杀!");
var flag = true;
while (flag)
{
if (DateTime.Now.Minute == minute)
{
flag = false;
for (int i = 0; i < 10; i++)
{
string name = $"客户端{id}号:{i}";
Task.Run(() =>
{
using (RedisClient client = new RedisClient("127.0.0.1", 6379))
{

//本来是二步走
//1 订单+1
//2 库存-1 //同一个时间片。只会执行一条指令
var num = client.Decr("number");
if (num < 0)
{
Console.WriteLine(name + "抢购失败");
}
//>=0
else
{
Console.WriteLine(name + "**********抢购成功***************");
}
}
});
//Thread.Sleep(10);
}
}
Thread.Sleep(10);
}
Console.ReadLine();
#endregion
}

posted @ 2021-12-09 11:12  g731717  阅读(37)  评论(0编辑  收藏  举报