Redis SCRIPT KILL命令

Redis SCRIPT KILL命令教程

Redis 的 SCRIPT KILL 命令用于杀死当前正在运行的 Lua 脚本,当且仅当这个 脚本 没有执行过任何写操作时,这个命令才生效。这个命令主要用于终止运行时间过长的脚本,比如一个因为 BUG 而发生无限 loop 的脚本,诸如此类。

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

假如当前正在运行的脚本已经执行过写操作,那么即使执行 SCRIPT KILL ,也无法将它杀死,因为这是违反 Lua 脚本的原子性执行原则的。在这种情况下,唯一可行的办法是使用 SHUTDOWN NOSAVE 命令,通过停止整个 Redis 进程来停止脚本的运行,并防止不完整(half-written)的信息被写入数据库中。

Redis SCRIPT KILL命令详解

语法

192.168.98.70:6379> SCRIPT KILL

返回值

执行成功返回 OK ,否则返回一个错误。

时间复杂度

O(1)。

可用版本

>= 2.6.0

案例

SCRIPT KILL杀死脚本

使用 SCRIPT KILL 杀死正在运行的脚本

127.0.0.1:6379> SCRIPT KILL (error) NOTBUSY No scripts in execution right now. 127.0.0.1:6379> SCRIPT KILL OK (2.56s)

当没有脚本运行时,我们使用 SCRIPT KILL 命令,杀死当前正在运行的脚本,报错,接着, 我们运行了一个 Lua 脚本,再次使用 SCRIPT KILL 命令,杀死当前正在运行的脚本,返回了 OK。

Redis SCRIPT KILL命令总结

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