【lua脚本学习】

lua脚本学习

因为项目中使用到lua脚本特来学习学习基本用法;

Redis中对lua脚本的介绍

https://redis.io/commands/eval/

Redis 脚本使用 Lua 解释器来执行脚本。 Redis 2.6 版本通过内嵌支持 Lua 环境。执行脚本的常用命令为 EVAL

lua脚本特点

简单的说Lua语言是一个可扩展的嵌入型的脚本语言。它具有以下的特点:

  • 嵌入式语言: 它是ANSI C实现,在大多数 ANSI C 编译器中无需更改即可编译,包括 gcc(在 AIX、IRIX、Linux、Solaris、SunOS 和 ULTRIX 上)、Turbo C(在 DOS 上)、Visual C++(在 Windows 3.1/95/NT 上)、Think C (MacOS) 和 CodeWarrior (MacOS)。基本上每种编程语言都有调用 C 函数的方法,因此您可以在所有这些语言中使用 Lua。 这包括 C++、Go、Rust、Python、……
  • 解释型语言:Lua脚本会先编译成字节码,然后在Lua虚拟机上解释执行这些字节码。保证了它的可移植性
  • 动态类型语言:Lua语言本身没有定义类型,不过语言中的每个值都包含着类型信息
  • 简洁轻量,运行速度快:它所有的实现不到6000行 ANSI C代码。只包括一个精简的核心和最基本的库,较新的5.4.3版本解释器编译后283kB(Linux,amd64)。同时Lua通常被称为市场上最快的脚本级 HLL 语言
  • 设计原则遵循尽量使用机制来代替规则约定: Lua语言中包含的机制有模块管理、自动垃圾收集、元表和元方法、引用机制等。这些机制下面会详细介绍

Eval基本语法:

https://www.runoob.com/redis/scripting-eval.html
在这里插入图片描述

使用Eval执行Redis命令:

eval 表示这是个lua脚本;

双引号里面的表示脚本内容;

后面数字代表后面有几个参数;1代表后面一个变量 2代表后面2个变量 使用的时候

向redis里面添加一个key:name value:xiaoming

eval "return redis.call('set',KEYS[1],KEYS[2])" 2 name xiaoming

redis中取一个key是name的value

eval "return redis.call('get',KEYS[1])" 1 name

删除key是name的value

eval "return redis.call('del',KEYS[1])" 1 name

Zset类型的有序集合 action_123 score:2 value:zset_value

eval "return redis.call('ZADD',KEYS[1],KEYS[2],KEYS[3])" 3 action_zset  2 zset_value

key添加或修改过期时间

eval "return redis.call('EXPIRE',KEYS[1],KEYS[2])" 2 action_zset  100

模糊查询key w3c开头的key

eval "return redis.call('KEYS',KEYS[1])" 1 w3c*

以毫秒为单位返回 key 的剩余的过期时间。

eval "return redis.call('PTTL',KEYS[1])" 1 w3ckey

https://wiki.luatos.com/pages/emulator.html
https://www.runoob.com/manual/lua53doc/contents.html

项目使用案例(后期补充):

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值