数据库
首页 > 数据库> > 25.Redis Lua脚本

25.Redis Lua脚本

作者:互联网

从 Redis 2.6 版本开始,Redis 使用内置的 Lua 解释器执行脚本,这意味着我们可以直接在 Redis 客户端执行Lua 脚本 ,于此同时 Redis 还非常贴心地提供了用于编写 Lua 脚本的EVAL命令。

第一个Lua脚本命令

Lua 是一种轻量小巧、开源的脚本语言,用标准 C语言编写。其设计目的就是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。它被广泛的应用于:游戏开发、独立应用脚本、Web 应用脚本、扩展和数据库插件等。

Redis 使用EVAL命令编写 lua 脚本,其语法格式如下:

127.0.0.1:6379> EVAL script numkeys key [key ...] arg [arg ...]  

参数说明如下:


举一个简单的示例:在 Redis 客户端使用 Lua 语言编写“Hello World”并将其输出。

127.0.0.1:6379> EVAL "return 'Hello world'" 0
"Hello world"

为什么使用Lua脚本

虽然 Redis 官网提供了丰富指令集(200多个),但是在某些特定的领域需要对指令进行扩充,因此 Redis 允许我们使用 Lua 语言以自定义的方式编写脚本命令,这满足了一部分用户的需求。Redis 服务器会以单线程、原子性的方式执行 Lua 脚本,保证 Lua 脚本在处理过程中不会被其他请求中断。

使用 Lua 脚本有如下好处:

常用脚本命令

Redis脚本命令
命令 说明
EVAL script numkeys key [key ...] arg [arg ...] 使用 Lua 解释器执行脚本。
EVALSHA sha1 numkeys key [key ...] arg [arg ...] Lua 解释器根据 sha1 校验码执行脚本。
SCRIPT EXISTS script [script ...] 查看指定的脚本是否保存在于缓存当中。
SCRIPT FLUSH 从脚本缓存中移除所有脚本。
SCRIPT KILL 杀死当前正在运行的 Lua 脚本。
SCRIPT LOAD script 将脚本 script 添加到脚本缓存中,但不马上执行这个脚本。

基本命令应用

EVAL 命令使用示例:

redis 127.0.0.1:6379> EVAL "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second   
1) "key1"  
2) "key2"  
3) "first"  
4) "second"  

标签:脚本,25,EVAL,...,Redis,Lua,key
来源: https://www.cnblogs.com/55zjc/p/16580147.html