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

常州网站建设公司如何sem培训机构

常州网站建设公司如何,sem培训机构,外贸订单信息,江苏个人网站备案要求java调用lua脚本完成对商品库存的管理 主页链接 微风轻吟挽歌的主页 如若有帮助请帮忙点赞 //lua脚本 获取到内存不够的商品StringBuilder sb new StringBuilder();//定义一个数组存储可能缺少库存的值sb.append(" local table {} ");//获取值sb.append(" …

java调用lua脚本完成对商品库存的管理

主页链接 微风轻吟挽歌的主页

如若有帮助请帮忙点赞
请添加图片描述

//lua脚本 获取到内存不够的商品StringBuilder sb = new StringBuilder();//定义一个数组存储可能缺少库存的值sb.append(" local  table = {} ");//获取值sb.append("  local values = redis.call('mget',unpack(KEYS)) ");//如果不够就放到table之中sb.append("  for i = 1, #KEYS do ");sb.append("     if tonumber(ARGV[i]) > tonumber(values[i]) then ");sb.append("         table[#table + 1] = KEYS[i] .. '=' .. values[i] ");sb.append("     end ");sb.append("  end");//判断 库存是否sb.append("  if #table > 0 then ");sb.append("  return table ");sb.append("  end ");sb.append("  for i = 1, #KEYS do  ");sb.append("  redis.call('decrby',KEYS[i],ARGV[i]) ");sb.append("  end ");sb.append("  return {} ");

lua 脚本的内容作业个简单的判断,相信逻辑大家都明白,只是lua脚本语言本身不太熟练,这里有一个简单模板,亲测可用 不一定时最优的模板

测试

这里的redisTemplate在官方jarbao中采用的jdk序列化方式导致中文乱码,我这里注入的是自己重写的(网上抄的),因为非本文重要内容,不再详述

   @AutowiredRedisTemplate<Object, Object> redisTemplate;@Resource(name = "redisTemplate")ValueOperations valueOperations;@ResourceStringRedisTemplate stringRedisTemplate;@Test//通过lua脚本多线程操作库存void get() throws IOException {String key1  = "apple";String key2  = "banana";String key3  = "栗子";//三个商品并设置其库存量valueOperations.set(key1,15L);valueOperations.set(key2,8L);valueOperations.set(key3,6L);//lua脚本 获取到内存不够的商品StringBuilder sb = new StringBuilder();//定义一个数组存储可能缺少库存的值sb.append(" local  table = {} ");//获取值sb.append("  local values = redis.call('mget',unpack(KEYS)) ");//如果不够就放到table之中sb.append("  for i = 1, #KEYS do ");sb.append("     if tonumber(ARGV[i]) > tonumber(values[i]) then ");sb.append("         table[#table + 1] = KEYS[i] .. '=' .. values[i] ");sb.append("     end ");sb.append("  end");//判断 库存是否sb.append("  if #table > 0 then ");sb.append("  return table ");sb.append("  end ");sb.append("  for i = 1, #KEYS do  ");sb.append("  redis.call('decrby',KEYS[i],ARGV[i]) ");sb.append("  end ");sb.append("  return {} ");RedisScript<List> script = RedisScript.of(sb.toString(),List.class);ExecutorService executorService = Executors.newCachedThreadPool();for (int i = 0; i < 10; i++) {int i1 = RandomUtil.randomInt(1, 5);executorService.execute(()->{List execute = stringRedisTemplate.execute(script,CollUtil.newArrayList(key1, key2, key3), String.valueOf(i1), String.valueOf(i1), String.valueOf(i1));if(execute.isEmpty()){System.out.println("库存足够,存储成功");return;}for (Object obj : execute){String[] split = obj.toString().split("=");System.out.println(StrUtil.format("商品{} 需求量:{} 库存不足,仅剩{}",split[0],i1,split[1]));}});}//测试中执行所以需要阻塞使用防止因为多线程执行的时候因为其他线程走完导致的测试结束System.in.read();}

测试结果

在这里插入图片描述
ok,这次的lua脚本就记录完毕。
那么开始正事请添加图片描述

http://www.tj-hxxt.cn/news/21937.html

相关文章:

  • 苏州网站优化公司陕西网站设计
  • 查看网站点击量网络推广的目标
  • 北京网站建设备案被公司优化掉是什么意思
  • 做网赌网站怎么推广拉人软文500字范文
  • 做装修网站公司google推广一年3万的效果
  • 如何做网站联盟营销技巧培训
  • 正定网站建设为什么打开网址都是站长工具
  • 做网站前端和平面配合快速排名seo软件
  • 做五金找订单查什么网站旅游seo整站优化
  • 专业网站建设一条龙新网站快速排名软件
  • 给客户做网站建设方案企业推广网站有哪些
  • 游戏开发工程师月薪拼多多标题关键词优化方法
  • 搜索引擎推广方法windows优化大师官方免费
  • 淘宝详情页psd模板免费seo培训学院
  • 太原最新新闻消息seo网站seo
  • 焦作网站建设费用建立网站费用大概需要多少钱
  • 如何把电脑改成服务器 做网站jsurl转码
  • 太原市零元网站建设微信广告投放推广平台多少费用
  • 网站开发怎么模拟真实苹果手机的使用seo关键词优化推广报价表
  • 合肥网站排名优化公司谷歌浏览器搜索引擎入口
  • 网站的建设流程图淘宝流量
  • 网站建设目的与意义黄冈便宜的网站推广怎么做
  • 郑州做网站好可以发外链的网站整理
  • 做网站服务器 用mac pro 怎么样40个免费网站推广平台
  • 沈阳学网站制作学校软件开发app制作
  • 公司网站推广计划书广州网络推广哪家好
  • 推荐专业做网站公司平面设计培训费用一般是多少
  • 网络营销推广公司网站有哪些seo快速优化方法
  • 手机网站的推广房地产销售怎么找客户
  • 做海鲜团购网站百度图片搜索