Redis开发--Redis执行脚本

命令作用
EVAL script numkeys key [key …] arg [arg …]执行lua脚本
EVALSHA sha1 numkeys key [key …] arg [arg …]根据给定的 sha1 校验码,执行缓存在服务器中的脚本
SCRIPT EXISTS script [script …]查看指定的脚本是否已经被保存在缓存当中
SCRIPT FLUSH从脚本缓存中移除所有脚本
SCRIPT LOAD script将脚本 script 添加到脚本缓存中,但并不立即执行这个脚本
SCRIPT KILL杀死当前正在运行的 Lua 脚本

1.缓存脚本

1) Redis Script Load 命令用于将脚本 script 添加到脚本缓存中,但并不立即执行这个脚本。

2)EVAL 命令也会将脚本添加到脚本缓存中,但是它会立即对输入的脚本进行求值。

3)如果给定的脚本已经在缓存里面了,那么不执行任何操作。

4)在脚本被加入到缓存之后,通过 EVALSHA 命令,可以使用脚本的 SHA1 校验和来调用这个脚本。

5)脚本可以在缓存中保留无限长的时间,直到执行 SCRIPT FLUSH 为止。

2.执行lua脚本

redis 127.0.0.1:6379> EVAL script numkeys key [key ...] arg [arg ...]
参数作用
scriptLua 脚本程序
numkeys指定键名参数的个数
key [key …]脚本中所用到的那些 Redis 键(key),通过全局变量 KEYS 数组访问
arg [arg …]附加参数,在 Lua 中通过全局变量 ARGV 数组访问
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"

3.根据给定的 sha1 校验码,执行缓存在服务器中的脚本

EVALSHA sha1 numkeys key [key ...] arg [arg ...] 
参数作用
sha1通过 SCRIPT LOAD 生成的 sha1 校验码
numkeys指定键名参数的个数
key [key …]脚本中所用到的那些 Redis 键(key),通过全局变量 KEYS 数组访问
arg [arg …]附加参数,在 Lua 中通过全局变量 ARGV 数组访问
127.0.0.1:6379> SCRIPT FLUSH
OK
127.0.0.1:6379> SCRIPT LOAD "return 'hello,lua'"
"880f98eb45cf5dee079a0f4e0918dda6304292e2"
127.0.0.1:6379> EVALSHA "880f98eb45cf5dee079a0f4e0918dda6304292e2" 0
"hello,lua"

4.杀死当前正在运行的脚本

SCRIPT KILL

Redis Script kill 命令用于杀死当前正在运行的 Lua 脚本,当且仅当这个脚本没有执行过任何写操作时,这个命令才生效。

这个命令主要用于终止运行时间过长的脚本,比如一个因为 BUG 而发生无限循环的脚本。

SCRIPT KILL 执行之后,当前正在运行的脚本会被杀死,执行这个脚本的客户端会从 EVAL命令的阻塞当中退出,并收到一个错误作为返回值。

5.查看指定脚本是否在缓存中

Script Exists 命令用于校验指定的脚本是否已经被保存在缓存当中,返回一个列表,包含 0 和 1 ,前者表示脚本不存在于缓存,后者表示脚本已经在缓存里面

SCRIPT EXISTS sha1 [sha1 ...]
127.0.0.1:6379> SCRIPT LOAD "return 'hello,lua'"
"880f98eb45cf5dee079a0f4e0918dda6304292e2"
127.0.0.1:6379> SCRIPT EXISTS "880f98eb45cf5dee079a0f4e0918dda6304292e2"
1) (integer) 1
127.0.0.1:6379> SCRIPT FLUSH
OK
127.0.0.1:6379> SCRIPT EXISTS "880f98eb45cf5dee079a0f4e0918dda6304292e2"
1) (integer) 0
127.0.0.1:6379>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值