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

总结

相关推荐
鼠鼠我捏,要死了捏1 小时前
Redis缓存穿透、缓存击穿与雪崩防护及性能优化实战指南
redis·cache·performance
再睡亿分钟!1 小时前
Spring MVC 的常用注解
java·开发语言·spring boot·spring
麦兜*2 小时前
MongoDB 常见错误解决方案:从连接失败到主从同步问题
java·数据库·spring boot·redis·mongodb·容器
山楂树下懒猴子3 小时前
ChatAI项目-ChatGPT-SDK组件工程
人工智能·chatgpt·junit·https·log4j·intellij-idea·mybatis
霸道流氓气质4 小时前
Java开发中常用CollectionUtils方式,以及Spring中CollectionUtils常用方法示例
java·spring
失散134 小时前
分布式专题——5 大厂Redis高并发缓存架构实战与性能优化
java·redis·分布式·缓存·架构
十八旬6 小时前
苍穹外卖项目实战(day7-1)-缓存菜品和缓存套餐功能-记录实战教程、问题的解决方法以及完整代码
java·数据库·spring boot·redis·缓存·spring cache
2301_781668617 小时前
Redis 面试
java·redis·面试
吐泡泡_7 小时前
Redis(缓存)
redis
optimistic_chen7 小时前
【Java EE进阶 --- SpringBoot】Spring DI详解
spring boot·笔记·后端·spring·java-ee·mvc·di