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

总结

相关推荐
AAA修煤气灶刘哥1 天前
别让Redis「歪脖子」!一次搞定数据倾斜与请求倾斜的捉妖记
redis·分布式·后端
christine-rr1 天前
linux常用命令(4)——压缩命令
linux·服务器·redis
麦兜*1 天前
MongoDB Atlas 云数据库实战:从零搭建全球多节点集群
java·数据库·spring boot·mongodb·spring·spring cloud
麦兜*1 天前
MongoDB 在物联网(IoT)中的应用:海量时序数据处理方案
java·数据库·spring boot·物联网·mongodb·spring
青衫客361 天前
Spring异步编程- 浅谈 Reactor 核心操作符
java·spring·响应式编程
凯子坚持 c1 天前
精通 Redis list:使用 redis-plus-plus 的现代 C++ 实践深度解析
c++·redis·list
weixin_456904271 天前
跨域(CORS)和缓存中间件(Redis)深度解析
redis·缓存·中间件
波波烤鸭1 天前
Redis 高可用实战源码解析(Sentinel + Cluster 整合应用)
数据库·redis·sentinel
Cyan_RA92 天前
SpringMVC @RequestMapping的使用演示和细节 详解
java·开发语言·后端·spring·mvc·ssm·springmvc
MarkHard1232 天前
如何利用redis使用一个滑动窗口限流
数据库·redis·缓存