Redis入门(6) - Lua脚本

本文详细介绍了Redis中如何使用Lua脚本,包括Lua的基本语法、表类型、函数、Redis执行脚本的方式如EVAL和EVALSHA,以及脚本相关命令如SCRIPT LOAD和SCRIPT KILL。此外,还强调了Lua脚本的原子性和执行时间限制,提醒开发者注意避免脚本执行过长导致的服务影响。
摘要由CSDN通过智能技术生成
  • Lua基本语法
  • 表类型
  • 函数
  • Redis执行脚本
  • KEYS与ARGV
  • 沙盒与随机数
  • 脚本相关命令
  • 原子性和执行时间

Lua是一种高效的轻量级脚本语言,能够方便地嵌入到其他语言中使用。在Redis中,借助Lua脚本可以自定义扩展命令。

Lua基本语法

数据类型
  • 空(nil),没有赋值的变量或表的字段值都是nil
  • 布尔(boolean)
  • 数字(number),整数或浮点数
  • 字符串(string),字符串可以用单引号或双引号表示,可以包含转义字符如\n \r等
  • 表(table),表类型是Lua语言中唯一的数据结构,既可以当数组又可以当字典,十分灵活
  • 函数(function),函数在Lua中是一等值(first-class-value),可以存储在变量中、作为函数的参数或返回结果。
变量

Lua的变量分为全局变量和局部变量,全局变量无需声明就可以直接使用,默认值是nil。
全局变量:

a=1 -- 为全局变量a赋值
print(b) -- 无需声明即可使用,默认值是nil

局部变量:

local c -- 声明一个局部变量c,默认值是nil
local d=1 -- 声明一个局部变量d并赋值为1
local e,f -- 可以同时声明多个局部变量

但在Redis中,为了防止脚本之间相互影响,只允许使用局部变量。

赋值

Lua支持多重赋值,如:

local a,b=1,2 --a的值是1,b的值是2
local c,d=1,2,3 --c的值是1,d的值是2,3被舍弃了
local e,f =1 --e的值是1,f的值是nil
操作符
  1. 数学操作符,包括常见的+ - * \ %(取模) -(一元操作符,取负)和幂运算符号^。

  2. 比较操作符,包括== ~=(不等于) > < >= <=。
    比较操作符不会对两边的操作数进行自动类型转换:

pring(1=='1') --结果为false
print({'a'}=={'a'}) -false,表类型比较的是二者的引用
  1. 逻辑操作符
    包括下面三个:
    not,根据操作数的真和假相应地返回false和true;
    and,a and b中如果a是真则返回b,否则返回a;
    or,a or b中,如果a是真则返回a,否则返回b。
    这些根据操作符短路的原理可以推断出。
print(1 and 5)  --5
print(1 or 5)  --1
print(not 0)  --false
print('' or 1)  --''

只要操作数不是nil或false,逻辑操作符就认为操作数是真,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值