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

总结

相关推荐
llwszx4 小时前
深入理解Java锁原理(一):偏向锁的设计原理与性能优化
java·spring··偏向锁
麦兜*7 小时前
Spring Boot启动优化7板斧(延迟初始化、组件扫描精准打击、JVM参数调优):砍掉70%启动时间的魔鬼实践
java·jvm·spring boot·后端·spring·spring cloud·系统架构
KK溜了溜了8 小时前
JAVA-springboot 整合Redis
java·spring boot·redis
CHENWENFEIc10 小时前
SpringBoot论坛系统安全测试实战报告
spring boot·后端·程序人生·spring·系统安全·安全测试
高兴达10 小时前
RPC--Netty客户端实现
java·spring·rpc
爱上语文12 小时前
Redis基础(6):SpringDataRedis
数据库·redis·后端
Java初学者小白13 小时前
秋招Day14 - Redis - 应用
java·数据库·redis·缓存
奈斯ing13 小时前
【Redis篇】数据库架构演进中Redis缓存的技术必然性—高并发场景下穿透、击穿、雪崩的体系化解决方案
运维·redis·缓存·数据库架构
一眼万年0414 小时前
Redis Cluster模式
redis·微服务
要开心吖ZSH14 小时前
《Spring 中上下文传递的那些事儿》Part 4:分布式链路追踪 —— Sleuth + Zipkin 实践
java·分布式·spring