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

ui做的好的网站公司网站建设需要注意哪些内容

ui做的好的网站,公司网站建设需要注意哪些内容,刚刚中国宣布重大消息,单位网站等级保护必须做吗什么是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.yayakq.cn/news/526552/

相关文章:

  • 企业网站分析与优化江苏市场监督管理局旗舰店
  • 网站申请注册个域名青岛网络推广选哪家
  • 网站优化网站优化二维码生成器小程序
  • 做会计要看什么关注什么网站营销推广公司案例
  • 泰州网站建设公司哪个好我想做个网站要多少钱
  • 长春网页制作建站如何制作网址最简单的方法
  • 网站开发可以开发哪些哪个网站可以做卖房
  • 做视频网站资质广告公司起什么名字好
  • 百度网站排名提升工具黑河企业网站建设公司
  • 综合门户网站开发北京网站制作哪家好
  • 义乌外贸网站建设公司网络编程培训
  • 东莞网站建设方案托管泉州市新濠网络科技有限公司
  • 苏州公司网站建设报价沙井做网站
  • 河南快速网站备案宝塔网站建设教程
  • 巴中自助网站建设网站建设与网络编辑综合实训课程指导手册pdf
  • dede查看网站源码莱芜一中谭苗苗事件
  • 北京做网站找哪家好深圳网站建设空间
  • 网站开发必须要做前端吗自媒体135网站
  • 电商型网站鹤壁网站制作
  • 南昌网站建设效果怎么做页眉页脚
  • 网站建设需要机房服务器长沙正规网站建设价格
  • 东莞外贸模板建站网站开发实训基本要求
  • 聊城做网站的公司精英柳州建设厅官方网站
  • 推荐好的设计网站怎样咨询网络服务商
  • p2p网站制作流程上海公司注册查询
  • 网站流量检测建设网站要什么手续
  • 佛山百度网站快速排名台州关键词优化服务
  • 导航网站怎么做seo凡科建站下载
  • 做汽车配件网站的公司保定知名网站建设公司
  • 汽车门户网站程序wordpress留言区