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

质量好网站建设费用鞍山信息港首页

质量好网站建设费用,鞍山信息港首页,网站新增关键词,怎么上传网站源码Redis设置hash#xff0c;为不同的field设置不同的过期时间 一、背景需求二、具体要求三、代码实现 一、背景需求 最近做了一个小需求#xff0c;由于系统对接#xff0c;导致我们的系统在高峰的时候CPU飙升#xff0c;所以需要在高峰的时候保护系统进程不受影响。 而且还… Redis设置hash为不同的field设置不同的过期时间 一、背景需求二、具体要求三、代码实现 一、背景需求 最近做了一个小需求由于系统对接导致我们的系统在高峰的时候CPU飙升所以需要在高峰的时候保护系统进程不受影响。 而且还需要我们知道当前对接的数据总量并且可以实时释放如果释放失败了还需要定时释放减少系统卡顿的同时不能对第三方产生影响。 此处肯定有人想到令牌桶算法或者redission。 SpringBoot基于guava集成令牌桶算法https://blog.csdn.net/qq_38254635/article/details/126398730 SpringBoot集成Redissonhttps://blog.csdn.net/qq_38254635/article/details/126398716 集成的虽好但我们用的场景单一集成还需要引入jar导致部署包变大所以我们需要手动搞一个。 二、具体要求 1、可以知道当前存在的总量 2、可实时对每个变量进行调整 3、变量的关闭失败后有自修复机制 三、代码实现 了解redisson的应该知道可以参考其做一个简易版。 package com;import com.alibaba.fastjson.JSONObject; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.util.Map; import java.util.concurrent.TimeUnit;public class Test {Resourceprivate StringRedisTemplate redisTemplate;private final static Integer SWITCH_COUNT 3;public static final String BUSINESS business:;public static final String CHECK check;public static final String BUSINESS_CHECK BUSINESS CHECK;public Result doLink(String strJson) {if(!getCheck(strJson)) return Result.error(当前调用超上限请稍后重试);return Result.success();}private boolean getCheck(String code){MapObject, Object objectMap redisTemplate.opsForHash().entries(BUSINESS_CHECK);//如果为空则视为第一次使用直接放行if(null objectMap || objectMap.size() 0) {this.setKey(code);return true;}//清洗数据清理过期redisInteger count 0;//当前有效总量for(Map.EntryObject, Object entry : objectMap.entrySet()){String user entry.getKey().toString();if(StringUtils.isEmpty(redisTemplate.opsForValue().get(BUSINESS_CHECK _ user))) {redisTemplate.opsForHash().delete(BUSINESS_CHECK, user);continue;}count;}//校验是否超过上限if(count SWITCH_COUNT) return false;this.setKey(code);return true;}private void setKey(String code){redisTemplate.opsForHash().put(BUSINESS_CHECK, code, JSONObject.toJSONString(code));redisTemplate.opsForValue().set(BUSINESS_CHECK _ code, code,1, TimeUnit.MINUTES);}//清理当前调用线程redisprivate void after(String code){redisTemplate.opsForHash().delete(BUSINESS_CHECK, code);redisTemplate.delete(code);}}仅提供一个思路 大致思路redis存一个hash把hash中的field当做key再存一个有效期的key。 当线程结束时手动回收hash中的field及对应的key。 考虑回收会存在失败的情况所以在使用的时候需做一遍数据清洗。 此方式仅适用于count较小时使用允许调用次数较多时数据清洗会很消耗性能。 整理不易点个赞吧☺☺☺
http://www.huolong8.cn/news/59691/

相关文章:

  • 转运公司网站制作广东商城网站建设
  • 百度没有投放的网站点击网站下的源代码和自己做的区别
  • 网站建网站建设企业wordpress容器
  • 网站建设必备南昌网站建设行业现状
  • 响应式网站设计软件西安 北郊网站建设
  • 厦门某某公司网站网站建设创建
  • 自己做的网站如何上传文件蒙自做网站的公司
  • 网站后台不能排版外贸网站建站h
  • 企石东莞网站建设深圳公司设计网站
  • 石家庄网站建设电商织梦wap网站模板
  • 杨凌规划建设局网站深圳市罗湖区住房和建设局官网
  • 唐山网站制作广告公司营销策划方案
  • 西宁手机微网站z怎么做优惠券网站
  • 网站实名认证需要什么资料dz论坛怎么做视频网站吗
  • html设计网站上海手机网站案例
  • 做网站界面多少钱网页游戏制作工具
  • 天津电子商务网站小程序和网站建设需要多钱
  • 昆明网站托管企业wordpress文章链接带问号
  • 新手建站教程报价单适合用于网站开发的工具
  • 专门做评测的网站有哪些网站怎样在360做优化
  • 中小企业网站制作费用开发公司年终总结
  • 免费的cms视频网站做公司网站需要准备什么科目
  • 网站建设中主页源码wordpress怎么换语言
  • 网站建设战略伙伴京紫元年深圳网站建设
  • 南通影楼网站建设个人新闻类网站模板
  • 没有网站做cpa购物网站建设成本
  • 怎样大力开发公司网站建设wordpress 4.5.2 编辑器插件
  • 网站建设的课程都需要什么网站建设数据库实训体会
  • 天河岗顶棠下上社网站建设备份核验单时网站域名
  • 静态html网址网站导航源码商城型网站建设