国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java利用Redis實現(xiàn)高并發(fā)計數(shù)器的示例代碼

Java利用Redis實現(xiàn)高并發(fā)計數(shù)器的示例代碼

2021-08-12 11:41李秀才 Java教程

這篇文章主要介紹了Java利用Redis實現(xiàn)高并發(fā)計數(shù)器的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

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

?
1
2
3
4
5
6
7
8
9
10
11
/**
* 是否拒絕服務
* @return
*/
private boolean denialOfService(String userId){
long count=JedisUtil.setIncr(DateUtil.getDate()+"&"+userId+"&"+"queryCarViolation", 86400);
if(count<=10){
 return false;
}
return true;
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
   /**
* 查詢違章
* @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è)務邏輯……
}

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

JedisUtil工具類:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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 (result<=1 && 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;
 }
}

 到此這篇關于Java利用Redis實現(xiàn)高并發(fā)計數(shù)器的示例代碼的文章就介紹到這了,更多相關Java Redis 高并發(fā)計數(shù)器內(nèi)容請搜索服務器之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/qq_33556185/article/details/79427271

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91精品啪啪 | 亚洲精品国产一区 | 国产一区二区三区在线视频 | 久久久精品久久久 | 亚洲一级毛片 | 高清18麻豆| 欧美色综合天天久久综合精品 | 99re在线播放视频 | 福利片在线免费观看 | 日韩精品一区二区三区中文字幕 | 日韩在线播放一区二区 | 亚洲综合精品久久 | 中文字幕一区三级久久日本 | 久久久人成影片免费观看 | 777色狠狠一区二区三区 | 中文国产在线观看 | 亚洲视频欧美视频 | 久久精品成人 | 九一午夜精品av | 精品免费视频 | 成人在线日本 | 亚洲综合在线一区 | 成人精品福利视频 | 成人综合网站 | 操操日日 | 欧美日韩国产影院 | 日韩成人在线电影 | 久久精品视频网站 | 久久久久这里只有精品 | 国产免费久久 | 国产亚洲一区二区三区在线观看 | 久久久久久久成人 | 亚洲日韩欧美一区二区在线 | 99热热热热| 欧美日韩视频在线第一区 | www.国产视频 | 欧美操 | 小视频在线 | 亚洲国产成人精品女人久久久 | 亚洲一区二区在线 | 亚洲高清在线视频 |