Redis 脚本 命令

目录

  • [1.Redis Script kill 命令 - 杀死当前正在运行的 Lua 脚本。](#1.Redis Script kill 命令 - 杀死当前正在运行的 Lua 脚本。)
    • 简介
    • 语法
      • [可用版本: >= 2.6.0](#可用版本: >= 2.6.0)
      • [返回值: 总是返回 OK](#返回值: 总是返回 OK)
    • 示例
  • [2.Redis Script Load 命令 - 将脚本 script 添加到脚本缓存中,但并不立即执行这个脚本。](#2.Redis Script Load 命令 - 将脚本 script 添加到脚本缓存中,但并不立即执行这个脚本。)
    • 简介
    • 语法
      • [可用版本: >= 2.6.0](#可用版本: >= 2.6.0)
      • [返回值: 给定脚本的 SHA1 校验和](#返回值: 给定脚本的 SHA1 校验和)
    • 示例
  • [3.Redis Eval 命令 - 执行 Lua 脚本。](#3.Redis Eval 命令 - 执行 Lua 脚本。)
    • 简介
    • 语法
      • [可用版本: >= 2.6.0](#可用版本: >= 2.6.0)
      • [返回值: Redis 脚本](#返回值: Redis 脚本)
    • 示例
  • [4.Redis Evalsha 命令 - 执行 Lua 脚本。](#4.Redis Evalsha 命令 - 执行 Lua 脚本。)
    • 简介
    • 语法
      • [可用版本: >= 2.6.0](#可用版本: >= 2.6.0)
      • [返回值: Redis 脚本](#返回值: Redis 脚本)
    • 示例
  • [5.Redis Script Exists 命令 - 查看指定的脚本是否已经被保存在缓存当中。](#5.Redis Script Exists 命令 - 查看指定的脚本是否已经被保存在缓存当中。)
    • 简介
    • 语法
      • [可用版本: >= 2.6.0](#可用版本: >= 2.6.0)
      • [返回值: 一个列表,包含 0 和 1 ,前者表示脚本不存在于缓存,后者表示脚本已经在缓存里面了。](#返回值: 一个列表,包含 0 和 1 ,前者表示脚本不存在于缓存,后者表示脚本已经在缓存里面了。)
    • 示例
  • [6.Redis Script Flush 命令 - 从脚本缓存中移除所有脚本。](#6.Redis Script Flush 命令 - 从脚本缓存中移除所有脚本。)
    • 简介
    • 语法
      • [可用版本: >= 2.6.0](#可用版本: >= 2.6.0)
      • [返回值: 总是返回 OK](#返回值: 总是返回 OK)
    • 示例
  • 总结

1.Redis Script kill 命令 - 杀死当前正在运行的 Lua 脚本。

简介

复制代码
SCRIPT KILL 执行之后,当前正在运行的脚本会被杀死,执行这个脚本的客户端会从 EVAL 命令的阻塞当中退出,并收到一个错误作为返回值。这个命令主要用于终止运行时间过长的脚本,比如一个因为 BUG 而发生无限循环的脚本。Redis Script kill 命令用于杀死当前正在运行的 Lua 脚本,当且仅当这个脚本没有执行过任何写操作时,这个命令才生效。Redis 脚本

语法

复制代码
redis 127.0.0.1:6379> SCRIPT KILL

可用版本: >= 2.6.0

返回值: 总是返回 OK

示例

shell 复制代码
redis 127.0.0.1:6379> SCRIPT KILL
OK

2.Redis Script Load 命令 - 将脚本 script 添加到脚本缓存中,但并不立即执行这个脚本。

简介

复制代码
关于使用 Redis 对 Lua 脚本进行求值的更多信息,请参见 EVAL 命令。脚本可以在缓存中保留无限长的时间,直到执行 SCRIPT FLUSH 为止。在脚本被加入到缓存之后,通过 EVALSHA 命令,可以使用脚本的 SHA1 校验和来调用这个脚本。如果给定的脚本已经在缓存里面了,那么不执行任何操作。EVAL 命令也会将脚本添加到脚本缓存中,但是它会立即对输入的脚本进行求值。Redis Script Load 命令用于将脚本 script 添加到脚本缓存中,但并不立即执行这个脚本。Redis 脚本

语法

复制代码
redis 127.0.0.1:6379> SCRIPT LOAD script

可用版本: >= 2.6.0

返回值: 给定脚本的 SHA1 校验和

示例

shell 复制代码
redis 127.0.0.1:6379> SCRIPT LOAD "return 1"
"e0e1f9fabfc9d4800c877a703b823ac0578ff8db"

3.Redis Eval 命令 - 执行 Lua 脚本。

简介

复制代码
Redis Eval 命令使用 Lua 解释器执行脚本。Redis 脚本

语法

复制代码
redis 127.0.0.1:6379> EVAL script numkeys key [key ...] arg [arg ...]

可用版本: >= 2.6.0

返回值: Redis 脚本

示例

shell 复制代码
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"

4.Redis Evalsha 命令 - 执行 Lua 脚本。

简介

复制代码
Redis Evalsha 命令根据给定的 sha1 校验码,执行缓存在服务器中的脚本。Redis 脚本

语法

复制代码
redis 127.0.0.1:6379> EVALSHA sha1 numkeys key [key ...] arg [arg ...]

可用版本: >= 2.6.0

返回值: Redis 脚本

示例

shell 复制代码
redis 127.0.0.1:6379> SCRIPT LOAD "return 'hello moto'"
"232fd51614574cf0867b83d384a5e898cfd24e5a"

redis 127.0.0.1:6379> EVALSHA "232fd51614574cf0867b83d384a5e898cfd24e5a" 0
"hello moto"

5.Redis Script Exists 命令 - 查看指定的脚本是否已经被保存在缓存当中。

简介

复制代码
Redis Script Exists 命令用于校验指定的脚本是否已经被保存在缓存当中。Redis 脚本

语法

复制代码
redis 127.0.0.1:6379> EVALSHA sha1 numkeys key [key ...] arg [arg ...]

可用版本: >= 2.6.0

返回值: 一个列表,包含 0 和 1 ,前者表示脚本不存在于缓存,后者表示脚本已经在缓存里面了。

示例

shell 复制代码
redis 127.0.0.1:6379> SCRIPT LOAD "return 'hello moto'"    # 载入一个脚本
"232fd51614574cf0867b83d384a5e898cfd24e5a"

redis 127.0.0.1:6379> SCRIPT EXISTS 232fd51614574cf0867b83d384a5e898cfd24e5a
1) (integer) 1

redis 127.0.0.1:6379> SCRIPT FLUSH     # 清空缓存
OK

redis 127.0.0.1:6379> SCRIPT EXISTS 232fd51614574cf0867b83d384a5e898cfd24e5a
1) (integer) 0

6.Redis Script Flush 命令 - 从脚本缓存中移除所有脚本。

简介

复制代码
Redis Script Flush 命令用于清除所有 Lua 脚本缓存。Redis 脚本

语法

复制代码
redis 127.0.0.1:6379> SCRIPT FLUSH

可用版本: >= 2.6.0

返回值: 总是返回 OK

示例

shell 复制代码
redis 127.0.0.1:6379> SCRIPT FLUSH
OK

总结

相关推荐
亦暖筑序2 小时前
手写 Spring AI Agent:让大模型自主规划任务,ReAct 模式全流程拆解
java·人工智能·spring
PD我是你的真爱粉4 小时前
Redis 数据类型与底层实现:从 SDS、Quicklist 到 ZSet 跳表彻底讲透
数据结构·redis
XDHCOM4 小时前
Redis节点故障自动恢复机制详解,如何快速抢救故障节点,确保数据不丢失?
java·数据库·redis
却话巴山夜雨时i6 小时前
互联网大厂Java面试场景:Spring Boot、微服务与Redis实战解析
spring boot·redis·微服务·kafka·prometheus·java面试·电商场景
麒麟ZHAO6 小时前
鸿蒙flutter第三方库适配 - 文件对比工具
数据库·redis·flutter·华为·harmonyos
香蕉鼠片6 小时前
Redis
数据库·redis·缓存
小臭希6 小时前
Redis(NoSQL数据库,Linux-Ubuntu环境下)
数据库·redis·缓存
希望永不加班6 小时前
SpringBoot 配置绑定:@ConfigurationProperties
java·spring boot·后端·spring
white-persist7 小时前
【vulhub spring CVE-2018-1270】CVE-2018-1270 Spring Messaging 远程命令执行漏洞 完整复现详细分析解释
java·服务器·网络·数据库·后端·python·spring
如来神掌十八式7 小时前
nginx + spring gateway+spring 服务_nginx 转发到 gateway
nginx·spring·gateway