国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > Redis > 正文

Redis實現(xiàn)高并發(fā)計數(shù)器

2020-10-28 21:31:40
字體:
供稿:網(wǎng)友

業(yè)務(wù)需求中經(jīng)常有需要用到計數(shù)器的場景:譬如一個手機號一天限制發(fā)送5條短信、一個接口一分鐘限制多少請求、一個接口一天限制調(diào)用多少次等等。使用Redis的Incr自增命令可以輕松實現(xiàn)以上需求。以一個接口一天限制調(diào)用次數(shù)為例:

 /** * 是否拒絕服務(wù) * @return */ private boolean denialOfService(String userId){ long count=JedisUtil.setIncr(DateUtil.getDate()+"&"+userId+"&"+"queryCarViolation", 86400); if(count<=10){  return false; } return true; }
/** * 查詢違章 * @param plateNumber車牌 * @param vin 車架號 * @param engineNo發(fā)動機 * @param request * @param response * @throws Exception */ @RequestMapping("/queryCarViolationList.json") @AuthorizationApi public void queryCarViolationList(@CurrentToken Token token,String plateNumber,String vin,    String engineNo,HttpServletRequest request,HttpServletResponse response) throws Exception {   String userId=token.getUserId();      //超過限制,攔截請求   if(denialOfService(userId)){  apiData(request, response, ReqJson.error(CarError.ONLY_5_TIMES_A_DAY_CAN_BE_FOUND));  return;   } //沒超過限制,業(yè)務(wù)邏輯…… }

每次調(diào)用接口之前,先獲得下計數(shù)器自增后的值,如果小于限制,放行,執(zhí)行后面的代碼。如果大于限制,則攔截掉。

JedisUtil工具類:

public class JedisUtil { protected final static Logger logger = Logger.getLogger(JedisUtil.class); private static JedisPool jedisPool;  @Autowired(required = true) public void setJedisPool(JedisPool jedisPool) { JedisUtil.jedisPool = jedisPool; } /** * 對某個鍵的值自增 * @author liboyi * @param key 鍵 * @param cacheSeconds 超時時間,0為不超時 * @return */ public static long setIncr(String key, int cacheSeconds) { long result = 0; Jedis jedis = null; try {  jedis = jedisPool.getResource();  result =jedis.incr(key);  if (cacheSeconds != 0) {  jedis.expire(key, cacheSeconds);  }  logger.debug("set "+ key + " = " + result); } catch (Exception e) {  logger.warn("set "+ key + " = " + result); } finally {  jedisPool.returnResource(jedis); } return result; }}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 灵台县| 洪湖市| 灌南县| 酉阳| 高安市| 苍南县| 娱乐| 池州市| 和平区| 浦江县| 江源县| 仁布县| 丰镇市| 海伦市| 寿宁县| 三河市| 监利县| 静乐县| 石柱| 荆门市| 建昌县| 镇赉县| 福安市| 祁阳县| 视频| 长白| 榆树市| 巴彦县| 富平县| 迭部县| 大洼县| 镇远县| 天祝| 岳普湖县| 昂仁县| 正定县| 辛集市| 滁州市| 绥阳县| 东丽区| 枞阳县|