当前位置: 首页 > news >正文

网站开发目的和意义10个神奇的.htaccess技巧(for wordpress)

网站开发目的和意义,10个神奇的.htaccess技巧(for wordpress),外链管理,企业进行网站建设的方式有目的 本文主要是使用NetCore/Net8加上Redis来实现一个简单的秒杀功能#xff0c;学习Redis的分布式锁功能。 准备工作 1.Visual Studio 2022开发工具 2.Redis集群#xff08;6个Redis实例#xff0c;3主3从#xff09;或者单个Redis实例也可以。 实现思路 1.秒杀开始…目的 本文主要是使用NetCore/Net8加上Redis来实现一个简单的秒杀功能学习Redis的分布式锁功能。 准备工作 1.Visual Studio 2022开发工具 2.Redis集群6个Redis实例3主3从或者单个Redis实例也可以。 实现思路 1.秒杀开始前将商品的数量缓存到Redis中 2.使用Redis的分布式缓存锁保证只有一个人能获取到锁进而保证减库存的操作的原子性。 3.获取到Redis分布式锁后开始后续的业务操作减少库存。 实现代码 // See https://aka.ms/new-console-template for more information using StackExchange.Redis;WriteLine(开始秒杀活动......); WriteLine(请输入秒杀商品的ID按回车键确认, ConsoleColor.Blue);//ThreadPool.SetMinThreads(200, 200);var db GetDataBase();string? productId Console.ReadLine(); if (!string.IsNullOrWhiteSpace(productId)) {int maxProductNumber 100;//设置商品的最大库存数量await db.StringSetAsync($ProductNumber:{productId}, maxProductNumber);//开始模拟购买ListTask allTaskList new ListTask();for (int i 0; i 1000; i){var task BuyProduct(db, buyerId: i);allTaskList.Add(task);}await Task.WhenAll(allTaskList);int buySuccessNumber Directory.GetFiles(${AppContext.BaseDirectory}/buyer/).Length;WriteLine($秒杀产品数量{maxProductNumber},购买成功用户数量{buySuccessNumber}, ConsoleColor.Green);Console.ReadLine(); } else {Console.WriteLine(输入商品ID为空自动退出); }IDatabase GetDataBase() {ConnectionMultiplexer cm ConnectionMultiplexer.Connect(127.0.0.1:6379,127.0.0.1:6380,127.0.0.1:6381,127.0.0.1:6382,127.0.0.1:6383,127.0.0.1:6384);return cm.GetDatabase(); }async Task BuyProduct(IDatabase db, int buyerId) {int threadId Environment.CurrentManagedThreadId;try{//首先获取当前库存判断是否还可以购买var leftProductNumber await GetProductCurrentNumberAsync(db, productId);if (leftProductNumber 1){WriteLine($线程Id{threadId},购买失败用户Id:{buyerId}库存不足1当前库存{leftProductNumber}, ConsoleColor.Red);return;}string key $ProductId:{productId};string lockValue Guid.NewGuid().ToString();//锁的过期时间一定要比成功获取锁后操作业务所需的时间长,//否则会导致业务还没有操作完成(减库存)锁就释放了导致后面的用户获取到锁最终导致超卖的情况bool lockSuccess await GetLockAsync(db, key, lockValue, TimeSpan.FromSeconds(5));if (!lockSuccess){WriteLine($线程Id{threadId},用户Id{buyerId},购买锁获取失败, ConsoleColor.Red);return;}try{//再次获取当前库存判断是否还可以购买leftProductNumber await GetProductCurrentNumberAsync(db, productId);if (leftProductNumber 1){WriteLine($线程Id{threadId},购买失败:{lockValue},用户Id:{buyerId}库存不足2当前库存{leftProductNumber}, ConsoleColor.Red);return;}//扣减库存await db.StringDecrementAsync($ProductNumber:{productId});WriteLine($线程Id{threadId},购买成功:{lockValue},用户Id:{buyerId}, ConsoleColor.Green);var dirPath ${AppContext.BaseDirectory}/buyer;if (!Directory.Exists(dirPath)){Directory.CreateDirectory(dirPath);}await File.WriteAllTextAsync(${dirPath}/buy-success-{buyerId}.txt, $锁Id{lockValue},用户Id{buyerId},产品Id{productId},剩余产品数量{leftProductNumber});}finally{bool lockReleased await db.LockReleaseAsync(key, lockValue);if (!lockReleased){WriteLine($线程Id{threadId},用户Id{buyerId},锁释放失败{lockValue}, ConsoleColor.Yellow);}}}catch(Exception ex){WriteLine($线程Id{threadId},用户Id{buyerId},购买失败{ex}, ConsoleColor.Red);} }async Taskbool GetLockAsync(IDatabase db, string key, string lockValue, TimeSpan timeout) {//每个用户有五次获取Redis分布式产品锁的机会如果5次重试后都没有获取到锁则默认秒杀失败int i 5;while (i 0){bool lockSuccess await db.LockTakeAsync(key, lockValue, timeout);if (lockSuccess){return true;}await Task.Delay(TimeSpan.FromMilliseconds(new Random(Guid.NewGuid().GetHashCode()).Next(100, 500)));i--;}return false; }async Tasklong GetProductCurrentNumberAsync(IDatabase db, string productId) {string? leftProductNumberString await db.StringGetAsync($ProductNumber:{productId});_ long.TryParse(leftProductNumberString, out long leftProductNumber);return leftProductNumber; }static void WriteLine(string text, ConsoleColor colour ConsoleColor.White) {Console.ForegroundColor colour;Console.WriteLine(text); } 运行效果
http://www.hkea.cn/news/14346835/

相关文章:

  • html网站开发开题报告范文企业网站 流程
  • h5网站建设方案预售网站开发
  • 长沙 网站优化wordpress怎么集成码支付
  • 医生在网站上做自我宣传营销的概念是什么
  • 做网站软件frontpage深圳城乡和建设局网站
  • 纸箱手工制作大全网站怎么做seo_
  • 一般建一个外贸网站多少钱企业网站建设合同
  • 提升网站知名度制作软件的工作叫什么
  • 河南网站优化哪家好包头网站优化
  • 舟山专业做网站几年前备案的网站现在网站不在了备案号还在吗
  • 哈尔滨营销网站制作龙口市规划建设局网站
  • 重庆互联网网站建设佛山外贸网站建设
  • 网站上的logo怎么做wordpress 搬家 域名
  • 黑马网站建设老域名做网站好吗
  • 山东省工程建设信息官方网站成都seo推广员
  • 襄阳哪里做网站全国做网站的大公司
  • 专业网站优化公司排名苏州园区限电
  • 企业网站最下面的那栏叫啥如何为网站做seo体检
  • asp 网站支持多语言腾讯企点怎么用
  • 广州做商城网站老薛主机做电影网站
  • 网站备案变更主体电话智能家居网站模板
  • 哪种编程语言可以做网站企业网站的基本功能有哪些
  • 管局审核网站名称兰州市住房和城乡建设局官网
  • 建设网站去工信部备案需要什么资料深圳网站建设公司元
  • 谁知道做网站的电话免费注册一个网站
  • 现在建网站可以赚钱吗设计公司和企业的区别
  • 比较出名的wordpress网站企业信息公示管理系统广东
  • 仿qq网站程序濮阳开公司怎么找客户
  • 没有经验可以做网站编辑吗做seo有什么好处
  • 上海网站开发哪家好薇o2o是什么意思啊