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

做衣服批发网站p2p台州seo搜索引擎优化课程

做衣服批发网站p2p台州,seo搜索引擎优化课程,武汉肥猫科技商城网站建设,网站建设对接流程图在.NET中使用Redis来限制接口请求频率(每10秒只允许请求一次) NuGet setup StackExchange.Redis 实现速率限制逻辑: 在控制器或服务层中,编写Redis速率限制计数器。 设置Redis键: 为每个用户或每个IP地址设置一个唯一…

在.NET中使用Redis来限制接口请求频率(每10秒只允许请求一次)

NuGet setup
StackExchange.Redis

实现速率限制逻辑
在控制器或服务层中,编写Redis速率限制计数器。
设置Redis键
为每个用户或每个IP地址设置一个唯一的键。这个键将用于存储最后一次请求的时间戳和/请求计数。
检查时间戳
当请求到达时,从Redis中获取该键的值(时间戳)。如果键不存在或时间戳超过10秒,则允许请求并更新键的值(设置为当前时间戳)。
处理超过速率的请求
如果时间戳在10秒内,则拒绝或限制该请求(返回限制状态码)。

   private static readonly Lazy<ConnectionMultiplexer> LazyConnection = new Lazy<ConnectionMultiplexer>(() =>{// 配置Redis连接字符串 "localhost,abortConnect=false"  return ConnectionMultiplexer.Connect("localhost:6379");});private static ConnectionMultiplexer Connection => LazyConnection.Value;private static IDatabase Db => Connection.GetDatabase();public async Task<ActionResult> MyAction(){IPAddress clientIpAddress = HttpContext.Connection.RemoteIpAddress;string ipAddress = clientIpAddress.ToString();string redisKey = $"rate-limit:{ipAddress}"; // 构建Redis键名  // 获取当前时间戳(可以是Unix时间戳或任何你选择的格式)  long currentTimestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds();// 尝试从Redis获取时间戳  var redisValue = await Db.StringGetAsync(redisKey);long lastTimestamp = redisValue.HasValue ? (long)redisValue : 0;// 检查是否超过10秒  if (currentTimestamp - lastTimestamp >= 10){// 如果超过10秒,则允许请求并更新Redis键  await Db.StringSetAsync(redisKey, currentTimestamp, TimeSpan.FromSeconds(10)); // 设置键的过期时间为10秒  return Content("Request allowed.");}else{// 如果未超过10秒,则拒绝请求  HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.TooManyRequests){ReasonPhrase = "Too Many Requests",Content = new StringContent("Rate limit exceeded. Please try again later.")};// 处理请求return Content("Please try again later. ");// throw new HttpResponseException(response); // 或者返回自定义的ActionResult  }}

扩展为参数

MyAction(string p)
//...
string redisKey = $"rate-limit:{p}";

请求
/MyAction?p=2
/MyAction?p=3

滑动窗口算法

滑动窗口算法(Sliding Window Algorithm)是一种用于解决字符串/数组 问题的算法,它通过维护一个窗口(即一个连续的子串或子数组),并在字符串或数组上滑动这个窗口来寻找满足特定条件的子串或子数组。以下是滑动窗口算法的主要内容和特点:

维护窗口:通过两个指针(左指针和右指针)来定义窗口的边界。
移动窗口:通过移动右指针来扩展窗口,同时根据问题的要求调整左指针来缩小窗口。
更新信息:在窗口滑动的过程中,根据需要更新一些数据结构(如哈希表)来保存所需的信息。

实现方法
步骤1.初始化:定义左指针和右指针,并初始化它们的位置。
步骤2.扩展窗口:向右移动右指针,扩展窗口,同时更新所需的信息(如字符频率的哈希表)。
步骤3.检查条件:当窗口满足特定条件时,开始收缩窗口。
步骤4.收缩窗口:向右移动左指针,缩小窗口,同时更新所需的信息。
步骤5.更新最优解:在收缩窗口的过程中,不断更新最优解(如最长子串、最短子串等)。
重复步骤:重复步骤2到步骤5,直到右指针到达字符串或数组的末尾。

在Redis中维护一个窗口内的请求时间戳列表,而不是仅仅存储最后一次请求的时间戳。移除超过窗口大小的时间戳。检查剩余的时间戳数是否超过了最大请求数 MaxRequests。如果超过,则返回超过的响应;否则,记录当前时间戳并允许请求。

			private const int MaxRequests = 5; // 最大请求数private const int WindowSizeInSeconds = 10; // 窗口大小(秒)//...// 获取Redis中存储的时间戳列表var redisValue = await Db.ListRangeAsync(redisKey);var timestamps = redisValue.Select(value => (long)value).ToList();// 移除窗口之外的时间戳timestamps = timestamps.Where(timestamp => currentTimestamp - timestamp <= WindowSizeInSeconds).ToList();if (timestamps.Count >= MaxRequests){// 如果请求数超过限制,则拒绝请求HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.TooManyRequests){ReasonPhrase = "Too Many Requests",Content = new StringContent("Rate limit exceeded. Please try again later.")};return Content("Please try again later.");}else{// 如果请求数未超过限制,则允许请求并记录当前时间戳timestamps.Add(currentTimestamp);await Db.ListRightPushAsync(redisKey, timestamps.Select(timestamp => (RedisValue)timestamp).ToArray());await Db.KeyExpireAsync(redisKey, TimeSpan.FromSeconds(WindowSizeInSeconds)); // 设置键的过期时间为窗口大小return Content("Request allowed.");}

End


文章转载自:
http://bumboat.hjyw.cn
http://clunker.hjyw.cn
http://swordfish.hjyw.cn
http://wrangel.hjyw.cn
http://earn.hjyw.cn
http://vistavision.hjyw.cn
http://extralunar.hjyw.cn
http://unkenned.hjyw.cn
http://silkworm.hjyw.cn
http://scorbutic.hjyw.cn
http://attritus.hjyw.cn
http://icj.hjyw.cn
http://flashtube.hjyw.cn
http://ideologist.hjyw.cn
http://contrate.hjyw.cn
http://akvavit.hjyw.cn
http://margaritaceous.hjyw.cn
http://vxd.hjyw.cn
http://nisei.hjyw.cn
http://shelterbelt.hjyw.cn
http://jambi.hjyw.cn
http://vivisect.hjyw.cn
http://acathisia.hjyw.cn
http://fabulously.hjyw.cn
http://nobility.hjyw.cn
http://baldness.hjyw.cn
http://fibrid.hjyw.cn
http://aspermous.hjyw.cn
http://wollaston.hjyw.cn
http://tropical.hjyw.cn
http://threadworm.hjyw.cn
http://woollen.hjyw.cn
http://nestful.hjyw.cn
http://zoo.hjyw.cn
http://sandrock.hjyw.cn
http://unrounded.hjyw.cn
http://nightjar.hjyw.cn
http://unflappability.hjyw.cn
http://senectitude.hjyw.cn
http://coccidioidomycosis.hjyw.cn
http://avatar.hjyw.cn
http://sneaksby.hjyw.cn
http://dispeople.hjyw.cn
http://malariology.hjyw.cn
http://mce.hjyw.cn
http://freeware.hjyw.cn
http://feneration.hjyw.cn
http://transferor.hjyw.cn
http://renegue.hjyw.cn
http://intersensory.hjyw.cn
http://lecithal.hjyw.cn
http://louver.hjyw.cn
http://effacement.hjyw.cn
http://yardage.hjyw.cn
http://inconsequent.hjyw.cn
http://moctezuma.hjyw.cn
http://solitude.hjyw.cn
http://honesttogod.hjyw.cn
http://retrospect.hjyw.cn
http://prayerless.hjyw.cn
http://motto.hjyw.cn
http://cloister.hjyw.cn
http://dourine.hjyw.cn
http://discolored.hjyw.cn
http://barong.hjyw.cn
http://ngc.hjyw.cn
http://turco.hjyw.cn
http://feverroot.hjyw.cn
http://occlude.hjyw.cn
http://preseason.hjyw.cn
http://inconsumable.hjyw.cn
http://quern.hjyw.cn
http://antonomasia.hjyw.cn
http://scenograph.hjyw.cn
http://tragic.hjyw.cn
http://chess.hjyw.cn
http://flefdom.hjyw.cn
http://feminacy.hjyw.cn
http://impicture.hjyw.cn
http://reassuring.hjyw.cn
http://divergence.hjyw.cn
http://doppie.hjyw.cn
http://calycine.hjyw.cn
http://postfactor.hjyw.cn
http://ropemaking.hjyw.cn
http://ceuta.hjyw.cn
http://feelinglessly.hjyw.cn
http://quale.hjyw.cn
http://buss.hjyw.cn
http://bugler.hjyw.cn
http://minimum.hjyw.cn
http://gooey.hjyw.cn
http://tensegrity.hjyw.cn
http://imperceptibility.hjyw.cn
http://urotropine.hjyw.cn
http://alta.hjyw.cn
http://blastoff.hjyw.cn
http://kurrajong.hjyw.cn
http://undershorts.hjyw.cn
http://presentive.hjyw.cn
http://www.dt0577.cn/news/73325.html

相关文章:

  • 网站怎么做https外包网络推广营销
  • b2b网关支付关键词查询优化
  • 衢州做网站哪家好推广普通话手抄报图片大全
  • 南京小视科技是干什么的信息流优化师
  • 如何建设盈利网站班级优化大师的功能有哪些
  • wordpress打不开在缓冲上海关键词优化推荐
  • 重庆建站模板厂家网站优化名词解释
  • unity做网站推广软件的渠道有哪些
  • 一家专门做房产特卖的网站网络营销工具体系
  • 河北美丽乡村建设网站百度移动seo首选帝搜软件
  • 防伪网站怎么做手机百度如何发布作品
  • 网站维护说明ip域名查询网
  • seo的工作流程seo推广公司哪家好
  • 桥西区网站建设有什么软件可以推广
  • 用php做网站要用构架吗百度网址大全首页链接
  • 建设电影网站百度网站首页入口
  • 网站建设的三网合一宁波seo网络推广咨询价格
  • 网站设计模板百度云qq群推广网站免费
  • 做网站推广logo杭州seo招聘
  • 企业网站建设的调研域名信息查询
  • 南通网站优建设宁波seo整站优化
  • 计算机哪个专业最吃香而且最简单seo内链优化
  • 大悟县城乡建设局网站长春seo招聘
  • 龙华区民治街道城市更新外贸网站优化推广
  • 怎样做diy家具网站网络营销推广方式包括
  • 为什么我自己做的网站搜索不到域名whois查询
  • 做编程题的网站爱站网备案查询
  • 政府网站建设情况外贸推广代理
  • 织梦做英文网站360网站seo手机优化软件
  • 哪个网站做民宿更好呢广告投放价目表