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

成都装修网站建设网站排名优化+o+m

成都装修网站建设,网站排名优化+o+m,专门做批发的网站有什么,北京本地服务信息网目录 1.幂等性是什么? 2.如何实现幂等性呢? 1.新增管理员,出弹窗的同时,请求后台。 2.后端根据雪花算法生成唯一标识key,以雪花数为key存到redis。并返回key给前端。 3.前端保存后端传过来的key。 4.前端输入完成…

目录

1.幂等性是什么?

2.如何实现幂等性呢?

1.新增管理员,出弹窗的同时,请求后台。

2.后端根据雪花算法生成唯一标识key,以雪花数为key存到redis。并返回key给前端。

3.前端保存后端传过来的key。

4.前端输入完成信息,点击【保存】,携带key请求后端。

5.请求到达后端,验证key,根据key去redis里查,如果得不到值,说明已处理过。否则尝试获取redisson锁,然后处理业务,并删掉redis里的值。


1.幂等性是什么?

新增和修改功能的时候,常常需要用到幂等性。

所谓的幂等性就是,即使不小心多按了几次,仍然只执行一次。常用在下单、增量修改、插入数据的时候。

效果:

在同一时间狂点鼠标“新增”,或者jmter压测并发多线程访问这个接口,也执行一次新增。

 

2.如何实现幂等性呢?

本次案例采用,token+redis+分布式锁:

流程如下所示:

1.新增管理员,出弹窗的同时,请求后台。

//获取唯一标识beforeAdd() {setTimeout(() => {this.dialogAdd = true;}, 500);//请求后台拿唯一标识(this.imageUrl = ""),this.$axios.get("/api/pc-zdy-sys/admin/preAddAdmin").then((res) => {if (res.data.code == 200) {this.allRoleList = res.data.data.allRoleList; //系统里所有的角色this.key = res.data.data.key; //唯一标识key}});},

2.后端根据雪花算法生成唯一标识key,以雪花数为key存到redis。并返回key给前端。

 public String preAddAdmin() {//雪花id 为key存到redis 值可以无意义Long snowflakeNextId = IdUtil.getSnowflakeNextId();String key = String.valueOf(snowflakeNextId);redisTemplate.opsForValue().set(key,"唯一标识");//返回雪花idreturn key;}

3.前端保存后端传过来的key。

data() {return {key: "", //唯一标识key};},

4.前端输入完成信息,点击【保存】,携带key请求后端。

confirmAdd() {//key带到后台去,请求接口确认新增this.AddAdmin.url = this.imageUrl;this.AddAdmin.key = this.key;if(this.isAnyFieldEmpty){this.$message({message: "不能为空",type: "danger",});return;}this.$axios.post("/api/pc-zdy-sys/admin", this.AddAdmin).then((res) => {if (res.data.code == 200) {this.$message({message: "恭喜你,新增成功",type: "success",});this.dialogAdd = false;this.queryAdmin()}}).catch((error) => {this.$message({message: "新增失败",type: "danger",});});},

5.请求到达后端,验证key,根据key去redis里查,如果得不到值,说明已处理过。否则尝试获取redisson锁,然后处理业务,并删掉redis里的值。

public void addAdmin(UserDTO userDTO) {//根据key找是否有tokenString key = userDTO.getKey();if(StringUtils.isBlank(key)||ObjectUtil.isEmpty(redisTemplate.opsForValue().get(key))){//没有key或根据key找不到token直接抛异常throw new RuntimeException("新增失败");}//拿锁去处理RLock lock = redissonClient.getLock(key);boolean b = lock.tryLock();//如果拿锁失败if(!b){throw new RuntimeException("新增失败");}lock.lock();try {//admin加到用户表User user = new User();BeanUtils.copyProperties(userDTO,user);user.setStatus(1);userMapper.insert(user);//将userDTO里角色list加到角色-用户 中间表去//需要用户id 角色id集合userRoleMapper.addRoleListToUserRole(user.getId(),userDTO.getRoleList());//删掉缓存redisTemplate.delete(key);} catch (Exception e){e.printStackTrace();}finally {lock.unlock();}}

http://www.hengruixuexiao.com/news/13840.html

相关文章:

  • 亚马逊网站 如何做站内seo免费发seo外链平台
  • 制作简历的免费网站公司品牌营销策划
  • mac os 做网站必应站长平台
  • 网站被别人做镜像百度收录批量查询
  • fifa17做任务网站百度竞价关键词查询
  • 上海网站建设公司大全今日头条关键词工具
  • 橙子落地页建站工具网络策划营销
  • 网站开发 哪个工具更快简述seo和sem的区别
  • 长沙网站建设 个人怎样在百度上免费做广告
  • 网站建设怎么做账会计网站检测中心
  • php动态网站开发唐四薪版答案国际实时新闻
  • 独立网站特点真正免费的网站建站平
  • 永久免费的网站空间黑帽seo技术有哪些
  • 小程序网站做多大尺寸口碑推广
  • 响应式食品企业网站流程优化
  • 公司网站首页怎么做美国站外推广网站
  • 手机自助建站永久免费百度开户资质
  • 东莞百姓网免费发布信息网微信seo什么意思
  • 做视频网站视频来源郑州关键词优化顾问
  • ubuntu 做网站凡科建站靠谱吗
  • 学校网站建设自查报告百度快照优化排名推广
  • 中文商城html网站模板快速优化网站排名的方法
  • 成都网站软件定制开发电商网站seo优化
  • 装饰工程验收规范最新版seo积分优化
  • 中际城市建设有限公司网站网络推广策划方案
  • java做自己的网站站长工具seo综合查询降级
  • 衡水医院网站建设焊工培训内容有哪些
  • 石家庄做网站电话b2b平台是什么意思
  • 贸易公司搜索引擎优化的概念
  • 做精美得ppt网站知乎在线crm网站建站