redis lua mysql_Redis lua 脚本入门

本文介绍了LuaLua脚本语言的设计初衷和优势,特别关注其在Redis中的使用,如减少网络开销、原子操作和脚本复用。通过实例演示了如何在Redis中执行Lua脚本并结合Redis.call进行命令调用。
摘要由CSDN通过智能技术生成

Lua

Lua 是一个小巧的脚本语言。是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由 Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo 所组成并于1993年开发。 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua 由标准 C 编写而成,几乎在所有操作系统和平台上都可以编译,运行。Lua 并没有提供强大的库,这是由它的定位决定的。所以Lua不适合作为开发独立应用程序的语言。Lua 有一个同时进行的 JIT 项目,提供在特定平台上的即时编译功能

Redis 中使用 LUA 的好处

1)减少网络开销,在 Lua 脚本中可以把多个命令放在同一个脚本中运行。

2)原子操作,Redis 会将整个脚本作为一个整体执行,中间不会被其他命令插入。换句话说,编写脚本的过程中无需担心会出现竞态条件。

3)复用性,客户端发送的脚本会永远存储在 Redis 中,这意味着其他客户端可以复用这一脚本来完成同样的逻辑。

Redis中使用lua基本语法

1EVAL script numkeys key [key ...] arg [arg ...]

参数说明

1

2

3(1)script即为lua脚本或lua脚本文件

(2)key一般指lua脚本操作的键,在lua脚本文件中,通过KEYS[i]获取

(3)arg指外部传递给lua脚本的参数,可以通过ARGV[i]获取

redis客户端使用 eval 执行lua脚本

1

2127.0.0.1:6379> eval 'local val=ARGV[1].." "..KEYS[1] return val' 1 jerry hello

"hello jerry"

结合redis,通过redis.call()调用redis的命令

1

2

3

4127.0.0.1:6379> set name tom

OK

127.0.0.1:6379> eval 'local val=ARGV[1].." "..redis.call("get",KEYS[1]) return val' 1 name hello

"hello tom"

结合redis传递多个参数,其中..表示连接字符串

1

2

3

4

5

6

7127.0.0.1:6379> set name tom

OK

127.0.0.1:6379> set name2 jack

OK

127.0.0.1:6379> eval 'local val=ARGV[1].." "..redis.call("get",KEYS[1])..";"..ARGV[2].." "..redis.call("get",KEYS[2]) return val' 2 name name2 hi hello

"hi tom;hello jack"

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值