scripting and functions 族

最近更新时间:2024-11-08 18:42:02

我的收藏
Redis 2.8版本标准架构、Redis 4.0、5.0、6.2、7.0标准架构与集群架构均支持 eval、evalsha、script exists、script flush、script load、script kill 命令,均不支持 script debug 命令。集群架构跨 Slot 场景不支持 eval、evalsha、script exists 命令。7.0版本新增 function 相关命令,如下表所示。
命令族
命令
新增说明
Fuction (Redis 7.0 新增)
FUNCTION DELETE library-name
新增 Fuction 功能。
删除一个 lib 和其中的函数。
FUNCTION DUMP
导出所有函数。
FUNCTION FLUSH [ASYNC | SYNC]

删除所有的 lib 和其中的函数。
FUNCTION KILL

Kill 当前正在执行中的函数。
FUNCTION LIST [LIBRARYNAME library-name-pattern] [WITHCODE]
返回 lib 和函数的信息。
FUNCTION LOAD [REPLACE] function-code
加载/替换函数。
FUNCTION RESTORE serialized-value [FLUSH | APPEND | REPLACE]

用于恢复之前使用 SAVE 或 BGSAVE 命令保存的快照。
FLUSH:恢复快照之前,当前数据库中的所有数据都会被清空
APPEND:恢复快照之前,当前数据库中的数据将被追加到快照中。
REPLACE:恢复快照之前,当前数据库中的数据将被快照中的数据完全替换。
FUNCTION STATS
返回当前正在执行的函数的状态。
FCALL function numkeys [key [key ...]] [arg [arg ...]]
调用某个 Fuction。
FCALL_RO function numkeys [key [key ...]] [arg [arg ...]]
FCALL 的 Readonly 版本。
scripting 族
EVAL_RO script numkeys [key [key ...]] [arg [arg ...]]
新增命令,可在只读副本中运行 lua script。
EVALSHA_RO sha1 numkeys [key [key ...]] [arg [arg ...]]
新增命令,可在只读副本中运行 lua script。
各版本具体支持情况,请参见下表。✓ 表示支持,x 表示不支持,- 表示该命令不存在跨 Slot 访问的场景。
命令
2.8 内存版(标准架构)
4.0 内存版(标准架构)
4.0 内存版(集群架构)
5.0 内存版(标准架构)
5.0 内存版(集群架构)
6.2 内存版(标准架构)
6.2 内存版(集群架构)
7.0 内存版(标准架构)
7.0 内存版(集群架构)
内存版(集群架构)跨 Slot 支持
eval
x
eval_ro
x
x
x
x
x
x
x
-
evalsha
x
evalsha_ro
x
x
x
x
x
x
x
-
script debug
x
x
x
x
x
x
x
x
x
-
script exists
x
script flush
-
script load
-
script kill
-
fuction delete
x
x
x
x
x
x
x
-
fuction kill
x
x
x
x
x
x
x
-
fuction dump
x
x
x
x
x
x
x
-
fuction flush
x
x
x
x
x
x
x
-
fuction list
x
x
x
x
x
x
x
-
fuction load
x
x
x
x
x
x
x
-
fuction restore
x
x
x
x
x
x
x
-
fuction status
x
x
x
x
x
x
x
-
fcall
x
x
x
x
x
x
x
-
fcall_ro
x
x
x
x
x
x
x
-