lua脚本相关命令

举报
别团等shy哥发育 发表于 2023/02/04 11:43:25 2023/02/04
【摘要】 @toc 1、简介  lua是一种比较轻量的脚本语言,可以嵌入应用程序中,能以较小的代价定制功能。在Redis里,也可以通过使用lua脚本来实现特定的效果。  llua脚本是一个和Redis独立的技术,不仅能用在Redis里,还能用在其他场景中。  l我们先使用docker命令创建redis容器再进入容器内部 2、把lua脚本装载到缓存里  l可以通过script load script命令...

@toc

1、简介

  lua是一种比较轻量的脚本语言,可以嵌入应用程序中,能以较小的代价定制功能。在Redis里,也可以通过使用lua脚本来实现特定的效果。
  llua脚本是一个和Redis独立的技术,不仅能用在Redis里,还能用在其他场景中。
  l我们先使用docker命令创建redis容器再进入容器内部
在这里插入图片描述
在这里插入图片描述

2、把lua脚本装载到缓存里

  l可以通过script load script命令把lua脚本装载到缓存里,但此时不会执行该脚本,该命令返回的是给定脚本的SHA1校验和。
在这里插入图片描述

  通过script load命令,可以把’return 1+2’这段脚本装载到缓存里,从第2行的输出里能看到该脚本的校验和。随后可以通过script exists命令来判断指定校验和的脚本是否存在于缓存中,该命令用法如下:
在这里插入图片描述

3、通过evalsha命令执行缓存中的脚本

可以通过evalsha命令来执行缓存中的脚本,该命令的格式如下:

evalsha sha1 numkeys key [key ...] arg [arg ...]

其中,sha1是缓存中的sha1校验和 numkeys是参数的个数,通过key参数能指定脚本中用到的键,通过arg可以指定脚本的参数。

  由于之前创建的脚本中包含了return语句,参数个数是0,因此可以通过如下命令来执行该脚本。

evalsha e13c398af9f2658ef7050acf3b266f87cfc2f6ab 0

在这里插入图片描述
  第1行evalsha命令的参数是之前装入缓存的lua脚本的sha1校验和,由于该脚本不带参数,所以numkeys参数值是0,从第2行里能看到该脚本返回的结果。

4、清空缓存中lua脚本的命令

  可以通过script flush命令来清空缓存中所有的lua脚本。
在这里插入图片描述

5、用eval命令执行lua脚本

  在之前的范例中,是把lua脚本装载到缓存中并执行。在实际的项目里,arg指定脚本的参数。

eval script numkeys key [key ...] arg [arg ...]

在这里插入图片描述
  在第1行里,通过eval命令运行了双引号里的lua脚本,eval命令的参数1表示有1个参数,name和‘Peter’分别对应于脚本里的KEYS[1]和ARGV[1]。由于脚本是通过return语句返回KEYS[1]和ARGV[1]的,因此在第2行和第3行里能看到打印对应的值。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。