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