《Redis使用手册之Lua脚本》

《Redis使用手册之Lua脚本》

EVAL:执行脚本

  • 127.0.0.1:6379> eval “return ‘hello world’” 0
    “hello world”

    127.0.0.1:6379> eval “return redis.call(‘set’,KEYS[1],ARGV[1])” 1 “message” “hello world”
    OK
    127.0.0.1:6379> get message
    “hello world”

    EVAL:执行脚本

    EVAL script numkeys key [key …] arg [arg …]

    script参数用于传递脚本本身。

    numkeys参数用于指定脚本需要处理的键数量,根据Lua的惯例,

    KEYS数组的索引将以1为开始:访问KEYS[1]可以取得第一个传入的key参数,访问KEYS[2]可以取得第二个传入的key参数,以此类推。 任意多个arg参数用于指定传递给脚本的附加参数,这些脚本可以在脚本中通过ARGV数组进行访问,与KEYS参数一样,ARGV数组的索引也是以1为开始的。

    使用脚本执行Redis命令

    redis.call(command, …)

    redis.pcall(command, …)

    这两个函数接受的第一个参数都是被执行的Redis命令的名字,而后面跟着的则是任意多个命令参数。

    在lua脚本中执行Redis命令所使用的格式与redis-cli客户端中执行Redis命令所使用的格式是完全一样的。

    EVAL:执行脚本

SCRIPT LOAD和EVALSHA:缓存并执行脚本

  • 127.0.0.1:6379> script load “return ‘hello world’”
    “5332031c6b470dc5a0dd9b4bf2030dea6d65de91”
    127.0.0.1:6379> script load “redis.call(‘SET’,KEYS[1],ARGV[1]); return redis.call(‘GET’,KEYS[1])”
    “27f72464d4122016431244ae33526a5fb72014f3”
    127.0.0.1:6379> evalsha “5332031c6b470dc5a0dd9b4bf2030dea6d65de91” 0
    “hello world”
    127.0.0.1:6379> evalsha “27f72464d4122016431244ae33526a5fb72014f3” 1 “msg”

    127.0.0.1:6379> evalsha “27f72464d4122016431244ae33526a5fb72014f3” 1 “msg” “Ciao!”
    “Ciao!”
    127.0.0.1:6379> script exists 27f72464d4122016431244ae33526a5fb72014f3 5332031c6b470dc5a0dd9b4bf2030dea6d65de91

    (integer) 1

    (integer) 1
    127.0.0.1:6379> script flush
    OK
    127.0.0.1:6379> script exists 27f72464d4122016431244ae33526a5fb72014f3 5332031c6b470dc5a0dd9b4bf2030dea6d65de91

    (integer) 0

    (integer) 0
    127.0.0.1:6379> script kill

    SCRIPT LOAD和EVALSHA:缓存并执行脚本

    SCRIPT LOAD script

    用户通过EVALSHA命令来执行已被缓存的脚本

    EVALSHA sha1 numkeys key[key …] arg[arg …]
    在这里插入图片描述

    除了第一个参数接受的事Lua脚本对应的SHA1校验和而不是脚本本身之外,EVALSHA命令的其他参数与EVAL命令的参数都是相同的。

    除了SCRIPT LOAD之外,EVAL命令在执行完脚本之后也会把被执行的脚本缓存起来,以供之后使用。

    通过Lua脚本缓存,我们可以将需要重复执行的Lua脚本缓存在服务器中,然后通过EVALSHA命令来执行已缓存的脚本,从而将执行Lua脚本所需耗费的网络带宽降至最低。

    SCRIPT LOAD和EVALSHA:缓存并执行脚本

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/587307.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网络安全知识点

网络安全 1. 网络安全的定义,网络安全的属性。 定义:针对各种网络安全威胁研究其安全策略和机制,通过防护、检测和响应,确保网络系统及数据的安全性。 属性:机密性 认证(可鉴别性&#xff09…

ASP.NET淘宝店主交易管理系统的设计与实现

摘 要 淘宝店主交易管理系统主要采用了ASPACCESS的B/S设计模式,通过网络之间的数据交换来实现客户、商品、交易的管理和对客户、商品、交易统计工作,从而提高淘宝店主在管理网店过程中的工作效率和质量。 系统分为基本资料模块,统计资料模…

Windows php 安装 Memcached扩展、php缺失 Memcached扩展、Class ‘Memcached‘ not found

在Windows系统下如何安装 php Memcached 扩展 下载dll文件 pecl地址:https://pecl.php.net/package/memcached 根据版本进行选择 : 解压下载的文件后得到了这么样的文件结构: 配置 移动dll文件到相应文件位置 重点: libme…

PG数据库结构与oracle比较

1.数据库集簇逻辑结构 数据库集簇概念:一个大的数据库是由若干个小的数据库组成,实现数据的隔离存放,在概念上应该是与mysql一样的 在mysql中可以用show database列出数据库 PG中用\l 数据库对象存放在数据库中: PG中的所有数据…

2024小米SU7首批锁单用户调研报告

来源:电动汽车用户联盟 80%的锁单用户认为自己是米粉,64%的用户拥有10个以上米家生态产品, 使用小米手机的比例为67%,使用苹果手机的比例为47% 2. 81%的用户为90后,均龄31岁,未婚者和已婚无孩者占比63%&am…

word启动缓慢之Baidu Netdisk Word Addin

word启动足足花了7秒钟,你知道我这7秒是怎么过来的吗? 原因就是我们可爱的百度网盘等APP,在我们安装客户端时,默认安装了Office加载项,不仅在菜单栏上加上了一个丑陋的字眼,也拖慢了word启动速度........ 解…

C++:智能指针

C:智能指针 内存泄漏RAII智能指针auto_ptrunique_ptrshared_ptr循环引用 weak_ptr deletershared_ptrunique_ptr 内存泄漏 内存泄漏是指程序在动态分配内存后,忘记或无法释放已经不再使用的内存,从而导致系统内存资源被逐渐耗尽的问题。这种…

038——基于STM32和I.MX6uLL实现uart控制GPS(失败者总结)

目录 1、GPS模块简介 2、GPS数据格式 3、方案梳理 1、GPS模块简介 全球定位系统(Global Positioning System, GPS)是一种以空中卫星为基础的高精度无线电导航的定位系统,它在全球任何地方以及近地空间都能够提供准确的地理位置、车行速度及精确的时间…

78、贪心-跳跃游戏

思路 方法1: canJump01 - 使用递归(回溯法) 这个方法是通过递归实现的,它从数组的第一个位置开始,尝试所有可能的跳跃步数,直到达到数组的最后一个位置或遍历完所有的可能性。 思路: 如果数组为空或者长…

018、Python+fastapi,第一个Python项目走向第18步:ubuntu24.04 安装cuda和pytorch环境

一、说明 我们安装了pytorch环境之后,会用yolo v9 来测试一下,看8g 显存能不能跑下来,上次用无影云电脑,4cpu8g内存直接爆了,云电脑也死机了,提示一直占用内存不释放,我自己的云电脑不能占用内…

帕金森患者应该怎么注意生活方式?

在面对帕金森病的挑战时,科学合理地改善日常生活方式,不仅能帮助患者更好地管理病情,还能提升生活质量。今天,让我们一起探索如何通过简单的日常调整,为患有帕金森病的朋友们带来积极的变化。 饮食调整:营养…

安全再升级,亚信安慧AntDB数据库与亚信安全二次牵手完成兼容性互认证

日前,湖南亚信安慧科技有限公司(简称:亚信安慧)的产品与亚信科技(成都)有限公司(简称:亚信安全)再次携手,完成亚信安慧AntDB数据库与亚信安全IPoE接入认证系统…

PPO 学习笔记

用PPO算法求解整个神经网络在迭代过程中的梯度问题 每走一步就会得到一个新的状态,把这个状态传到网络里面,会得到一个 action,执行这个 action 又会到达一个新状态 policy 中由状态 st 生成动作 at,生成的这个 at 是由整个网络的…

CGAL 点云数据生成DSM、DTM、等高线和数据分类

原文链接 CGAL 点云数据生成DSM、DTM、等高线和数据分类 - 知乎 在GIS应用软件中使用的许多传感器(如激光雷达)都会产生密集的点云。这类应用软件通常利用更高级的数据结构:如:不规则三角格网 (TIN)是生成数字高程模型 (DEM) 的基础,也可以利…

CSS中的圆角和阴影

目录 盒子圆角 圆角基础使用 圆角常见使用 通过设置盒子圆角得到一个圆形 通过设置盒子圆角,得到一个“操场”的样式 盒子阴影 文字阴影 盒子圆角 圆角基础使用 在 CSS3 中,新增了圆角边框样式,这样我们的盒子就可以变圆角了。 使用…

深入浅出TCP 与 UDP

🔥 引言 在互联网的广阔天地里,TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)作为传输层的两大支柱,各自承担着不同的使命。下面这篇文章将带你从基础到进阶,全…

8. Django 表单与模型

8. 表单与模型 表单是搜集用户数据信息的各种表单元素的集合, 其作用是实现网页上的数据交互, 比如用户在网站输入数据信息, 然后提交到网站服务器端进行处理(如数据录入和用户登录注册等).网页表单是Web开发的一项基本功能, Django的表单功能由Form类实现, 主要分为两种: dj…

练习题(2024/5/1)

1二叉树的层平均值 简单 相关标签 相关企业 给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:[3.00000,14.50000…

关于建表、表字段的增删改等的语法及举例(字段类型、字段约束、建表语法、表字段增删改、注意事项等)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

ASUS华硕ROG幻15笔记本GU502GU原装出厂Windows10系统工厂模式安装包下载,带MyASUS WinRE恢复重置功能

华硕ROG Zephyrus M15笔记本原厂Win10预装OEM系统,恢复开箱状态 适用型号:GU502GW,GU502GU,GU502GV 链接:https://pan.baidu.com/s/1lTK_CUFT9N3q0sXBS7ENPg?pwd8hm2 提取码:8hm2 华硕原装W10系统工厂…