IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Redis Lua脚本 -> 正文阅读

[大数据]Redis Lua脚本

EVAL script numkeys [key [key ...]] [arg [arg ...]]


一、EVAL的介绍

EVAL和EVALSHA使用Redis 2.6.0版本开始内置的Lua解释器来运行脚本。

EVAL的第一个参数是Lua 5.1脚本。 该脚本不需要定义 Lua 函数(也不应该)。 它只是一个将在 Redis 服务器的上下文中运行的 Lua 程序。

EVAL 的第二个参数是脚本后面的参数数量,从第三个参数开始代表Redis的键名。Lua 可以使用 KEYS 全局变量以数组下标的形式访问这些参数(所以 KEYS[1], KEYS[2], …)。

所有额外的参数不应该代表键名并且可以被 Lua 使用 ARGV 全局变量访问,与键发生的情况非常相似(所以 ARGV[1], ARGV[2], …)。

举例:

> eval "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second
1) "key1"
2) "key2"
3) "first"
4) "second"

注意:
Lua 数组作为 Redis 多批响应返回,这是一种 Redis 返回类型,你的客户端库可能会在你的编程语言中将其转换为 Array 类型。

使用两个不同的 Lua 函数从 Lua 脚本调用 Redis 命令:

  • redis.call()
  • redis.pcall()

redis.call() 会引发 Lua 错误,进而迫使 EVAL 返回错误给命令调用者,而 redis.pcall 将捕获错误并返回表示错误的 Lua Table。

redis.call() 和 redis.pcall() 函数的参数都是格式良好的 Redis 命令的参数:

> eval "return redis.call('set','foo','bar')" 0
OK

上面的脚本将键 foo 设置为字符串 bar。 然而,它违反了 EVAL 命令语义,因为脚本使用的所有键都应该使用 KEYS 数组传递。

> eval "return redis.call('set',KEYS[1],'bar')" 1 foo
OK

在执行之前必须分析所有 Redis 命令,以确定该命令将操作哪些键。为了使这个是正确的,必须显式传递键。 这在很多方面都很有用,但特别是要确保 Redis 集群可以将您的请求转发到适当的集群节点。

请注意,此规则不是为了让用户有机会滥用 Redis 单实例配置而强制执行的,代价是编写与 Redis 集群不兼容的脚本。

Lua 脚本可以使用一组转换规则返回一个从 Lua 类型转换为 Redis 协议的值。

二、Lua和Redis数据类型之间的转换

三、返回 Redis 类型的辅助函数

四、脚本的原子性

五、错误处理

六、在低内存情况下运行Lua

七、Bandwidth and EVALSHA

八、脚本缓存语义

九、脚本命令

十、具有确定性写入的脚本

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-09-27 14:09:28  更:2021-09-27 14:10:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 23:01:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码