tencent cloud

腾讯云分布式缓存数据库(兼容 Redis)

scripting and functions 族

Download
聚焦模式
字号
最后更新时间: 2026-08-11 11:11:59

命令介绍

Scripting and Functions 族命令用于在服务端执行 Lua 脚本和管理可复用函数库,适用于需要多步骤原子操作、减少网络往返、或实现复杂业务逻辑下沉到数据层的场景。其核心命令按功能可分为以下三类:
Lua 脚本执行
EVAL / EVALSHA:在服务端原子性执行一段 Lua 脚本(所有操作在同一事件循环中完成,不会被其他命令打断)。EVAL 直接传入脚本源码,EVALSHA 通过 SHA1 哈希调用已缓存的脚本。
EVAL_RO / EVALSHA_RO(Redis 7.0+):只读副本可执行的版本,用于从节点上的只读脚本操作。
脚本缓存管理
SCRIPT LOAD:将脚本加载到服务端缓存并返回 SHA1 哈希。
SCRIPT EXISTS:检查脚本是否存在于缓存中。
SCRIPT FLUSH:清空所有脚本缓存。
SCRIPT KILL:终止正在执行的长时间运行脚本。
Functions 函数库(Redis 7.0+ / Valkey 8.0+)
Functions 机制将脚本升级为命名函数库,支持持久化存储与主从复制,提供更好的可维护性和版本管理能力。
FUNCTION LOAD / FUNCTION DELETE / FUNCTION FLUSH:加载、删除或清空函数库。
FUNCTION LIST / FUNCTION DUMP / FUNCTION RESTORE:列出、导出或导入函数库。
FUNCTION STATS:查看函数执行统计。
FCALL / FCALL_RO:调用已注册的命名函数(RO 版本可在只读副本执行)。
更多信息请参见 Valkey 官方文档:Scripting 命令组

命令支持概览

基础命令evalevalshascript existsscript flushscript loadscript kill,Redis 2.8标准架构及4.0、5.0、6.2、7.0版本、Valkey 8.0、9.0的标准架构与集群架构均支持。
7.0+ 新增命令eval_roevalsha_rofunction deletefunction dumpfunction flushfunction killfunction listfunction loadfunction restorefunction statsfcallfcall_ro,仅 Redis 7.0 版本及 Valkey 8.0、9.0 版本支持。其中 eval_roevalsha_ro 为只读副本执行版本,fcallfcall_ro 用于调用自定义函数。
全局不支持script debug 在所有版本与架构中均不支持。
跨 Slot 限制:集群架构下,evalevalshascript exists 不支持跨 Slot 操作,操作的 Key 必须落在同一个 Slot 上。

命令兼容性矩阵

Scripting and Functions 族命令在各版本与架构下的支持情况如下表所示(✓ 表示支持,✗ 表示不支持,— 表示该命令不存在跨 Slot 访问场景)。
说明:
eval_roevalsha_ro 为只读命令,可在只读副本中执行 Lua 脚本;function 系列命令用于管理 Redis 自定义函数库。以上命令仅 Redis 7.0 及 Valkey 8.0、9.0 支持。
命令
Valkey 9.0标准架构
Valkey 9.0集群架构
Redis 7.0/Valkey 8.0标准架构
Redis 7.0/Valkey 8.0集群架构
Redis 6.2标准架构
Redis 6.2集群架构
Redis 5.0标准架构
Redis 5.0集群架构
Redis 4.0标准架构
Redis 4.0集群架构
Redis 2.8标准架构
集群架构跨 Slot 支持
eval
eval_ro
evalsha
evalsha_ro
script debug
script exists
script flush
script load
script kill
function delete
function kill
function dump
function flush
function list
function load
function restore
function status
fcall
fcall_ro

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈