redis-cli 使用lua脚本笔记

前言

众所周知,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"

posted @ 2023-05-20 23:09  DaenMax  阅读(254)  评论(0编辑  收藏  举报