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

springboo单机多线程高并发防止重复消费的redis方案

springboo单机多线程高并发防止重复消费的redis方案

仅提供方案与测试。
想法:第一次收到userCode时,检查是否在redis中有,如果有,就表明已经消费了,返回抢单失败;否则,就去消费,顺便写入redis缓存中。

1、单独做redis锁,测试(失败案例)

	public static int countNum = 0;public static int countFailNum = 0;@Anonymous@GetMapping("/testRedis")public AjaxResult testRedis(String userCode){String key = "sign:"+userCode;if (redisCache.hasKey(key)){++countFailNum;System.out.println("抢单成功,人数是"+countNum+"  | 抢单失败的人数是"+countFailNum);return AjaxResult.error("抢单失败");}redisCache.setCacheObject(key,userCode,10, TimeUnit.MINUTES);++countNum;System.out.println("抢单成功,人数是"+countNum+"  | 抢单失败的人数是"+countFailNum);return AjaxResult.success("抢单成功,人数是"+countNum);}

在这里插入图片描述
在这里插入图片描述

很明显,单纯的redis,根本扛不住基础的并发请求

2、线程锁+redis锁,测试(正确方案)

给方法加线程锁 关键字:synchronized
在这里插入图片描述
在这里插入图片描述
结果结果如下
在这里插入图片描述

http://www.lryc.cn/news/204809.html

相关文章:

  • Java架构师内功数据库
  • 踩着节日的小尾巴
  • UG\NX二次开发 设置视图中心 UF_VIEW_set_center
  • leetcode做题笔记201. 数字范围按位与
  • 游戏盾如何有效防护DDoS
  • JavaScript中的类型转换
  • 01-JVM 内存结构
  • 树与二叉树(考研版)
  • 前端车牌键盘组件
  • 什么是脚本文件,脚本的执行,脚本格式等
  • react 实战- 玩转 react 全家桶(进阶)学习
  • 【Python】取火柴小游戏(八什博弈)
  • 【Redis安装】Ubuntu和Centos
  • 【Java】ArrayList集合使用
  • 【proteus】8086仿真/汇编:创建项目并添加汇编代码文件
  • 如何给Github上的开源项目提交PR?
  • 【Java】小计 TCP UDP的区别
  • Day 1 Vue 页面框架
  • ChatGPT课件汇总介绍
  • 自然语言处理---RNN、LSTM、GRU模型
  • rust学习——方法 Method
  • 目录遍历漏洞
  • Python基础入门例程10-NP10 牛牛最好的朋友们
  • html web前端,登录,post请求提交 json带参
  • 防火墙实验
  • php中进程、线程、协程详细讲解
  • 无线通信中SINR的含义
  • pnp单目相机标定测距
  • Java反射获取内部类方法
  • 发挥服务器的无限潜能:创意项目、在线社区和更多