一步一步学习Redis——脚本功能的相关命令

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 一步一步学习Redis——脚本功能的相关命令

文章目录:


1.开篇

2.Redis脚本功能的相关命令

2.1 EVAL命令

语法

2.2 SCRIPT LOAD命令

语法

返回值

2.3 EVALSHA命令

语法

2.4 SCRIPT EXISTS命令

语法

返回值

2.5 SCRIPT FLUSH命令 

语法

返回值

2.6 SCRIPT KILL命令

语法

返回值

1.开篇


Redis脚本使用 Lua 解释器来执行脚本。 Redis 2.6 版本通过内嵌支持 Lua 环境。执行脚本的常用命令为EVAL

2.Redis脚本功能的相关命令


序号

命令及描述

1

EVAL script numkeys key [key...] arg [arg...]
执行 Lua 脚本。

2

EVALSHA sha1 numkeys key [key...] arg [arg...]
执行 Lua 脚本。

3

SCRIPT EXISTS script [script...]
查看指定的脚本是否已经被保存在缓存当中。

4

SCRIPT FLUSH
从脚本缓存中移除所有脚本。

5

SCRIPT KILL
杀死当前正在运行的 Lua 脚本。

6

SCRIPT LOAD script
将脚本 script 添加到脚本缓存中,但并不立即执行这个脚本。

2.1 EVAL命令

Redis Eval 命令使用 Lua 解释器执行脚本。

语法

redis 127.0.0.1:6379> EVAL script numkeys key [key ...] arg [arg ...]

参数说明:

·       script参数是一段 Lua 5.1 脚本程序。脚本不必(也不应该)定义为一个 Lua 函数。

·       numkeys用于指定键名参数的个数。

·       key [key ...] EVAL 的第三个参数开始算起,表示在脚本中所用到的那些 Redis (key),这些键名参数可以在 Lua 中通过全局变量 KEYS 数组,用 1 为基址的形式访问( KEYS[1] KEYS[2] ,以此类推)

·       arg [arg ...]附加参数,在 Lua 中通过全局变量 ARGV 数组访问,访问的形式和 KEYS 变量类似( ARGV[1] ARGV[2] ,诸如此类)

2.2 SCRIPT LOAD命令

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

EVAL命令也会将脚本添加到脚本缓存中,但是它会立即对输入的脚本进行求值。

如果给定的脚本已经在缓存里面了,那么不执行任何操作。

在脚本被加入到缓存之后,通过 EVALSHA 命令,可以使用脚本的 SHA1 校验和来调用这个脚本。

脚本可以在缓存中保留无限长的时间,直到执行 SCRIPT FLUSH 为止。

语法

redis 127.0.0.1:6379> SCRIPT LOAD script

返回值

给定脚本的 SHA1 校验和

2.3 EVALSHA命令

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

将脚本缓存到服务器的操作可以通过 SCRIPT LOAD 命令进行。

这个命令的其他地方,比如参数的传入方式,都和 EVAL 命令一样。

语法

redis 127.0.0.1:6379> EVALSHA sha1 numkeys key [key ...] arg [arg ...]

参数说明:

·       sha1 通过 SCRIPT LOAD 生成的 sha1 校验码。

·       numkeys用于指定键名参数的个数。

·       key [key ...] EVAL 的第三个参数开始算起,表示在脚本中所用到的那些 Redis (key),这些键名参数可以在 Lua 中通过全局变量 KEYS 数组,用 1 为基址的形式访问( KEYS[1] KEYS[2] ,以此类推)

·       arg [arg ...]附加参数,在 Lua 中通过全局变量 ARGV 数组访问,访问的形式和 KEYS 变量类似( ARGV[1] ARGV[2] ,诸如此类)

2.4 SCRIPT EXISTS命令

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

语法

redis 127.0.0.1:6379> SCRIPT EXISTS sha1 [sha1 ...]

返回值

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

列表中的元素和给定的 SHA1 校验和保持对应关系,比如列表的第三个元素的值就表示第三个 SHA1 校验和所指定的脚本在缓存中的状态。


2.5 SCRIPT FLUSH命令 

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

语法

redis 127.0.0.1:6379> SCRIPT FLUSH

返回值

总是返回 OK

2.6 SCRIPT KILL命令

Redis Script kill 命令用于杀死当前正在运行的 Lua 脚本,当且仅当这个脚本没有执行过任何写操作时,这个命令才生效。

这个命令主要用于终止运行时间过长的脚本,比如一个因为 BUG 而发生无限循环的脚本。

SCRIPT KILL 执行之后,当前正在运行的脚本会被杀死,执行这个脚本的客户端会从 EVAL 命令的阻塞当中退出,并收到一个错误作为返回值。

语法

redis 127.0.0.1:6379> SCRIPT KILL

返回值

总是返回 OK

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
3月前
|
缓存 NoSQL Redis
Redis 脚本
10月更文挑战第18天
39 3
|
12天前
|
NoSQL 应用服务中间件 API
Redis是如何建立连接和处理命令的
本文主要讲述 Redis 是如何监听客户端发出的set、get等命令的。
|
2月前
|
存储 NoSQL PHP
如何用Redis高效实现点赞功能?用Set?还是Bitmap?
在众多软件应用中,点赞功能几乎成为标配。本文从实际需求出发,探讨如何利用 Redis 的 `Set` 和 `Bitmap` 数据结构设计高效点赞系统,分析其优缺点,并提供 PHP 实现示例。通过对比两种方案,帮助开发者选择最适合的存储方式。
43 3
|
3月前
|
NoSQL Linux Redis
Docker学习二(Centos):Docker安装并运行redis(成功运行)
这篇文章介绍了在CentOS系统上使用Docker安装并运行Redis数据库的详细步骤,包括拉取Redis镜像、创建挂载目录、下载配置文件、修改配置以及使用Docker命令运行Redis容器,并检查运行状态和使用Navicat连接Redis。
364 3
|
2月前
|
存储 NoSQL Java
Redis命令:列表模糊删除详解
通过本文的介绍,我们详细探讨了如何在Redis中实现列表的模糊删除。虽然Redis没有直接提供模糊删除命令,但可以通过组合使用 `LRANGE`和 `LREM`命令,并在客户端代码中进行模糊匹配,来实现这一功能。希望本文能帮助你在实际应用中更有效地操作Redis列表。
77 0
|
3月前
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
45 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
|
3月前
|
NoSQL Redis 数据安全/隐私保护
Redis 命令
10月更文挑战第15天
42 0
|
缓存 NoSQL Redis
Redis命令——脚本
Redis 脚本使用 Lua 解释器来执行脚本。 Reids 2.6 版本通过内嵌支持 Lua 环境。执行脚本的常用命令为 EVAL。
1397 0
|
缓存 NoSQL Redis
redis必杀命令:脚本
题记: Redis 脚本使用 Lua 解释器来执行脚本。 Reids 2.6 版本通过内嵌支持 Lua 环境。执行脚本的常用命令为 EVAL。
1279 0