前言

众所周知,redis可以执行lua脚本,至于为什么要用lua脚本来操作redis,自行百度咯

先来讲一下最简单的方式,

关于如何在java springboot里用lua脚本,请查看我另一篇文章:https://www.cnblogs.com/daen/p/17418024.html

更为详细的资料请参考以下文章

https://blog.csdn.net/jiayibingdong/article/details/115186990

https://developer.aliyun.com/article/195914

https://www.jianshu.com/p/864ddda9288f

开始

打开你的redis安装根目录,在此目录打开cmd

直接使用命令

格式:redis-cli eval "具体的脚本" KEYS参数个数 KEYS1 KEYS2 ARGV1 ARGV2

每个KEYS用空格隔开,每个ARGV也是用空格隔开,KEYS和ARGV也是用空格隔开

如果没有KEYS参数,KEYS参数个数就写0

无参数

执行 redis-cli eval "local msg = 'abc';return msg;" 0

结果 "abc"

有KEYS参数

执行 redis-cli eval "local msg1 = KEYS[1];local msg2 = KEYS[2];return msg1 .. msg2;" 2 a b

结果 "ab"

其中的 .. 是拼接字符串的意思,具体请学习LUA脚本

有ARGV参数

执行 redis-cli eval "local msg1 = ARGV[1];local msg2 = ARGV[2];return msg1 .. msg2;" 0 c d

结果 "cd"

有KEYS和ARGV参数

执行 redis-cli eval "local msg1 = KEYS[1];local msg2 = KEYS[2];local msg3 = ARGV[1];local msg4 = ARGV[2];return msg1 .. msg2 .. msg3 .. msg4;" 2 a b c d

结果 "abcd"

写成Lua文件

每次都要在控制台中手敲lua比较烦人,我们可以写成lua文件来调用(下面的例子中,我在redis根目录新建了一个lua文件夹

然后再cmd中使用命令:redis-cli --eval lua脚本文件路径 KEYS1 KEYS2 , ARGV1 ARGV2

每个KEYS用空格隔开,每个ARGV也是用空格隔开,KEYS和ARGV用空格逗号空格( , )隔开

注意,不需要写KEYS参数个数了哦(当然也可以写)

当然了,你也可以将上述命令写成bat文件,更爽一步(下面的例子中,我把bat放在redis根目录)

记得加个pause,不然bat就一闪而过了,例如:

redis-cli --eval lua/1.lua
pause

下面的例子和上面的Lua命令是一样的,只不过多了换行而已

无参数

lua
local msg = 'abc';
return msg;
bat
redis-cli --eval lua/1.lua
pause

结果 "abc"

有KEYS参数

lua
local msg1 = KEYS[1];
local msg2 = KEYS[2];
return msg1 .. msg2;

其中的 .. 是拼接字符串的意思,具体请学习LUA脚本

bat
redis-cli --eval lua/1.lua a b
pause

结果 "ab"

有ARGV参数

lua
local msg1 = ARGV[1];
local msg2 = ARGV[2];
return msg1 .. msg2;
bat
redis-cli --eval lua/1.lua , c d
pause

结果 "cd"

注意bat文件里的空格和逗号

有KEYS和ARGV参数

lua
local msg1 = KEYS[1];
local msg2 = KEYS[2];
local msg3 = ARGV[1];
local msg4 = ARGV[2];
return msg1 .. msg2 .. msg3 .. msg4;
bat
redis-cli --eval lua/1.lua a b , c d
pause

结果 "abcd"

redis-cli 使用lua脚本笔记的更多相关文章

  1. Redis中的原子操作(2)-redis中使用Lua脚本保证命令原子性

    Redis 如何应对并发访问 使用 Lua 脚本 Redis 中如何使用 Lua 脚本 EVAL EVALSHA SCRIPT 命令 SCRIPT LOAD SCRIPT EXISTS SCRIPT ...

  2. Redis进阶实践之十九 Redis如何使用lua脚本

    一.引言               redis学了一段时间了,基本的东西都没问题了.从今天开始讲写一些redis和lua脚本的相关的东西,lua这个脚本是一个好东西,可以运行在任何平台上,也可以嵌入 ...

  3. 在redis中使用lua脚本

    在实际工作过程中,可以使用lua脚本来解决一些需要保证原子性的问题,而且lua脚本可以缓存在redis服务器上,势必会增加性能. 不过lua也会有很多限制,在使用的时候要注意. 在Redis中执行Lu ...

  4. redis中使用lua脚本

    lua脚本 Lua是一个高效的轻量级脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能 使用脚本的好处 1.减少网络开销,在Lua脚 ...

  5. 新姿势!Redis中调用Lua脚本以实现原子性操作

    背景:有一服务提供者Leader,有多个消息订阅者Workers.Leader是一个排队程序,维护了一个用户队列,当某个资源空闲下来并被分配至队列中的用户时,Leader会向订阅者推送消息(消息带有唯 ...

  6. 在redis中使用lua脚本让你的灵活性提高5个逼格

    在redis的官网上洋洋洒洒的大概提供了200多个命令,貌似看起来很多,但是这些都是别人预先给你定义好的,但你却不能按照自己的意图进行定制, 所以是不是感觉自己还是有一种被束缚的感觉,有这个感觉就对了 ...

  7. StackExchange.Redis加载Lua脚本进行模糊查询的批量删除和修改

    前言 使用StackExchange.Redis没有直接相关的方法进行模糊查询的批量删除和修改操作,虽然可以通过Scan相关的方法进行模糊查询,例如:HashScan("hashkey&qu ...

  8. python redis客户端使用lua脚本

    有一个需求,为一个key设置一个field存储时间戳,每当有新数据,判断新数据时间戳是否大于之前的时间戳,如果是,更新时间戳,由于依赖中间执行结果,所以使用lua减少客户端和服务端通信次数. #!/u ...

  9. Php+Redis 实现Redis提供的lua脚本功能

    <?php require_once "predis-0.8/autoload.php"; $config['schema'] = 'tcp'; $config['host' ...

  10. 【笔记】《Redis设计与实现》chapter20 Lua脚本

    chapter20 Lua脚本 Redis从2.6版本开始引入对Lua脚本的支持,通过在服务器中嵌入Lua环境,Redis客户端可以使用Lua脚本,直接在服务器端原子地执行多个Redis命令 20.1 ...

随机推荐

  1. Kubernetes鉴权资源 —— SubjectAccessReview详解

    1.概述 在 Kubernetes 集群中,授权(Authorization) 是保障安全的核心机制之一.无论是用户.ServiceAccount 还是自动化工具,对资源的操作都需要经过严格的权限控制 ...

  2. 【ABAQUS文档笔记】ABAQUS刚体单元和可变形单元的review

    学习笔记,帮助文档学习笔记 目录 A. finite element DOF of Elem Order of Elem Formulation of Elem Integration A.1 con ...

  3. [第四章]ABAQUS CM插件中文手册

    ABAQUS Composite Modeler User Manual(zh-CN) Dassault Systèmes, 2018 注: 源文档的交叉引用链接,本文无效 有些语句英文表达更易理解, ...

  4. Supac 如何修改地址界限高层点

    编辑->图层->运算 2.选择z ->填写高度 如-180阶段 3.保存

  5. go kratos protobuf 接收动态JSON数据

    前言 google.protobuf.Struct 是 Google Protocol Buffers 中的一种特殊类型,用于表示动态的键值对数据.它可以存储任意类型的数据,并提供了方便的方法来访问和 ...

  6. MongoDB入门介绍与案例分析

    一.MongoDB 数据库定位 首先我们来看一下 MongoDB 是什么样的数据库.数据库分两大类: OLTP(Online Transaction Processing)联机事务处理. OLAP(O ...

  7. Tinyhttpd 源代码初步解读

    Tinyhttpd 是很早以前的一个 web 服务器程序,由 C 语言编写,整个程序十分小巧,源码只有几百行.它一般不适合用于生产环境,因为它很简单,只实现了读取 html 以及 Get / POST ...

  8. BUUCTF---signin

    题目 welcome to crypto world!! 密文:424a447b57653163306d655f74345f424a444354467d 解题 啥也没有只有一段密文,只能从密文下手了, ...

  9. 小白必看的cmd简单代码!(图片看不到的可复制 粘贴到Typroa进行观看)

    打卡cmd的方法 直接window加r 输入cmd 在下方菜单 找到window标志,打开 输入命令提示符 更高级的cmd权限使用:右键命令提示符,点击"以管理员身份运行" 一些简 ...

  10. ESP32+Arduino入门教程(二):连接OLED屏

    前言 文中视频效果可在此次观看:ESP32+Arduino入门教程(二):连接OLED屏 接线 现在先来看看接线. 我的是0.91寸的4针OLED屏. OLED引脚 ESP32-S3引脚 GND GN ...