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

购物网站开发问题域分析网络营销推广的渠道有哪些

购物网站开发问题域分析,网络营销推广的渠道有哪些,黑河网站建设,北京大兴企业网站建设哪家好什么是lua脚本? lua语言是一个轻量级的脚本语言,可以嵌入其他语言中使用,调用宿主语言的功能。lua语法简单,小巧,源码一共才200多K,本身不会有太强的功能,很多的语言也支持lua语言,…

什么是lua脚本?

lua语言是一个轻量级的脚本语言,可以嵌入其他语言中使用,调用宿主语言的功能。lua语法简单,小巧,源码一共才200多K,本身不会有太强的功能,很多的语言也支持lua语言,比如redis、Nginx

redis语言中完美嵌入了lua脚本功能,redis可以调用lua脚本中的api,lua脚本也可以调用redis中的命令

redis调用lua脚本

在redis中调用lua脚本,需要使用eval指令

127.0.0.1:6379>eval "return 'hello'" 0
"hello"

调用lua脚本,动态传入参数,其中表达式script后面第一个参数nkey表示key的对应位置,后面的表示key和对应的参数argv

# script脚本后面,第一个参数1表示key为其后的第一个参数,也就是1,如何key后面的参数都是ARGV
127.0.0.1:6379>eval "if KEYS[1]=='1' then return ARGV[1] end return ARGV[2]" 1 1 'hello' 'hi'
"hello"
127.0.0.1:6379>eval "if KEYS[1]=='1' then return ARGV[1] end return ARGV[2]" 1 1 'hello' 'hi'
"hi"

lua脚本调用redis命令

使用lua调用redis的命令,需要使用redis.call调用

# key为0表示能获取到锁
127.0.0.1:6379>eval "local key = redis.call('exists',KEYS[1]) if key==0 then return redis.call('set',KEYS[1],ARGV[1]) end return 1" 1 orderId01 1

写个lua脚本,来实现一个简单的分布锁锁

private static final String LOCK_LUA_SCRIPT = "local lockParam = redis.call('exists', KEYS[1])\n" +"if lockParam == 0 then\n" +"redis.call('set', KEYS[1], ARGV[1])\n" +"redis.call('expire', KEYS[1], ARGV[2])\n" +"end\n" +"return lockParam\n";

简单实现抢单的业务

  @Autowiredprivate RedisTemplate redisTemplate;@Testpublic void testLua() {Long orderId = IdUtil.getSnowflake().nextId();String lockKey = "order:"+orderId;String requestId = IdUtil.randomUUID();try {Long lock = (Long) redisTemplate.execute(RedisScript.of(LOCK_LUA_SCRIPT, Long.class), Arrays.asList(lockKey), requestId, 30);// 抢得到锁if (lock == 0) {// 模拟业务执行10sTimeUnit.MILLISECONDS.sleep(10*1000);}log.info("lock:[{}]", lock);} catch (Exception e) {testRelease(lockKey, requestId);} finally {testRelease(lockKey, requestId);}}

锁释放的,也通过lua脚本实现,主要是保证原子性

 private String UNLOCK_LUA_SCRIPT = "if redis.call('get', KEYS[1]) == ARGV[1] then return redis.call('del', KEYS[1]) else return 0 end";@Test
public void testRelease(String lockKey, String lockValue) {redisTemplate.execute(RedisScript.of(UNLOCK_LUA_SCRIPT, Long.class), Arrays.asList(lockKey), lockValue);
}

Lua脚本使用场景

  • 保证原子性地执行多个命令
  • 需要返回中间值组合编排后面的命令
http://www.wangmingla.cn/news/12112.html

相关文章:

  • 高端电商网站开发hao123网址之家官网
  • 做商城网站买多大的空间青岛新闻最新今日头条
  • 网站建设评审表河北网站建设公司排名
  • 推荐做素菜的网站百度上海总部
  • 自己做网站怎么优化全网搜索指数查询
  • 网站上怎么做动画广告百度一下就知道首页
  • 做网站用到ps么百度搜索广告投放
  • 全flash网站制作山东关键词网络推广
  • 女生做网站编辑怎么样网络推广专员岗位职责
  • 网站建设网站定制自助建站申请
  • 那么在线crm是免费seo网站排名查询
  • 营销型网站设计方针写软文赚钱的平台都有哪些
  • 免费公安网站模板如何做网站seo排名优化
  • 网站后台找不到了怎么办企业网站设计思路
  • 主题资源网站建设 模块五作业站长工具seo词语排名
  • 长治做百度网站一年多少钱网站优化和网站推广
  • 营口市网站建设长治seo顾问
  • wordpress 收录插件福建键seo排名
  • 网站里怎样做物流跟踪功能优化方案
  • 云畅网站建设后台浙江seo关键词
  • 网站备案多久可以注销seo排名优化点击软件有哪些
  • 做家电维修网站能接到单吗江苏疫情最新消息
  • 成全视频免费观看在线观看高清动漫seo快速排名百度首页
  • 网赌网站怎么建设网络公关公司
  • wordpress怎么使用七牛云储存seo课程多少钱
  • 摄影网站公司百度推广后台登录页面
  • 设计导航精选最好的设计网站大全商品关键词怎么优化
  • nginx 一个独立ip 建立2个独立网站 2个域名seo百度快速排名
  • 深圳做网站公司地点优化营商环境 提升服务效能
  • 10天搞定网站开发如何做好网站站内优化