前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >lua脚本相关命令

lua脚本相关命令

作者头像
别团等shy哥发育
发布2023-02-25 15:20:32
4890
发布2023-02-25 15:20:32
举报
文章被收录于专栏:全栈开发那些事

lua脚本相关命令

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命令来执行缓存中的脚本,该命令的格式如下:

代码语言:javascript
复制
evalsha sha1 numkeys key [key ...] arg [arg ...]

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

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

代码语言:javascript
复制
evalsha e13c398af9f2658ef7050acf3b266f87cfc2f6ab 0

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

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

  可以通过script flush命令来清空缓存中所有的lua脚本。

5、用eval命令执行lua脚本

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

代码语言:javascript
复制
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行里能看到打印对应的值。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • lua脚本相关命令
  • 1、简介
  • 2、把lua脚本装载到缓存里
  • 3、通过evalsha命令执行缓存中的脚本
  • 4、清空缓存中lua脚本的命令
  • 5、用eval命令执行lua脚本
相关产品与服务
云数据库 Redis®
腾讯云数据库 Redis®(TencentDB for Redis®)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档